0

要打印可以被 1 到 10 之间的每个数字整除的前 50 个数字,我已经这样做了,现在如何在内循环中执行除法测试任务?

for ($i = 1, $j = 1; $j <= 50; $i++) {
    if ($i % 1 == 0 && $i % 2 == 0 && $i % 3 == 0 && $i % 4 == 0 && $i % 5 == 0 && $i % 6 == 0 && $i % 7 == 0 && $i % 8 == 0 && $i % 9 == 0 && $i % 10 == 0) {
        echo "$i\n";
        $j++;
    }
}
4

4 回答 4

4
for ($i = 1; $i <= 50; $i++)
{
        $j = $i * 2520;
        echo "$j\n";
} 
于 2013-01-14T21:52:22.260 回答
2

把问题翻转过来。与其搜索部门,不如将它们多出来:

$min = 5 * 7 * 8 * 9; // Min number is 5 * 7 * 8 * 9. (1,2,3,4,6,10 are implied)  Every number that meets the condition is a multiple of this.
for ($i = 1; $i <= 50; $i++)
{
  echo $min * $i; 
  echo "\n";
}
于 2013-01-14T22:02:54.513 回答
1

您可以嵌套循环并使用模运算符( %)。

for ($i = 1, $count = 0; $count < 50; $i++) {
    $good = true;
    for ($j = 2; $j <= 10; $j++) {
         if ($i % $j != 0) {
             $good = false;
             break;
         }
    }

    if ($good) {
        echo "$i\n";
        $count++;
    }
}
于 2013-01-14T21:46:54.680 回答
1

您只需要测试它们是否是,和的倍数9,如果是,则增加计数器。当到达时,主循环被打破。875jj50

$div = array(9,8,7,5);
function isMultipleOf10($num){
    for($i=0;$i<4;$i++){
        if($num%$div[$i]!=0){
            return 0;
        }
    }
    return 1;
}
$i = 1;
$j = 0;
while($j<50){
    if(isMultipleOf10($i)){
        echo $i . "\n";
        $j++;
    }
    $i++;
}
于 2013-01-14T21:58:41.170 回答