RosettaCodeData/Task/Arithmetic-numbers/PHP/arithmetic-numbers.php
2026-04-30 12:34:36 -04:00

50 lines
1.1 KiB
PHP

<?php
// Arithmetic numbers
$n = 1;
$arithm_cnt = 0;
$comp_cnt = 0;
echo 'The first 100 arithmetic numbers are:'.PHP_EOL;
while ($arithm_cnt < 1000001) {
$dv = 1;
$dv_cnt = 0;
$sum = 0;
while (true) {
$quot = intdiv($n, $dv);
if ($quot < $dv)
break;
if ($quot == $dv && $n % $dv == 0) {
// $n is a square
$sum += $quot;
$dv_cnt++;
break;
}
if ($n % $dv == 0) {
$sum += $dv + $quot;
$dv_cnt += 2;
}
$dv++;
}
if ($sum % $dv_cnt == 0) {
// $n is arithmetic
$arithm_cnt++;
if ($arithm_cnt <= 100) {
echo str_pad($n, 4, ' ', STR_PAD_LEFT);
if ($arithm_cnt % 10 == 0)
echo PHP_EOL;
}
if ($dv_cnt > 2)
$comp_cnt++;
if ($arithm_cnt == 1000 || $arithm_cnt == 10000 ||
$arithm_cnt == 100000 || $arithm_cnt == 1000000) {
echo PHP_EOL;
echo 'The '.str_pad($arithm_cnt, 7, ' ', STR_PAD_LEFT).
'th arithmetic number is '.
str_pad($n, 8, ' ', STR_PAD_LEFT) .
' up to which ', str_pad($comp_cnt, 6, ' ', STR_PAD_LEFT).
' are composite.';
}
}
$n++;
}
echo PHP_EOL;
?>