打印前50个数字,每个数字可以从1到10整除

时间:2013-01-14 21:41:15

标签: php for-loop nested-loops

打印前50个可以被1到10的每个数字整除的数字我已经完成了这个,现在我怎样才能在内循环中进行除法测试任务?

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 个答案:

答案 0 :(得分:4)

for ($i = 1; $i <= 50; $i++)
{
        $j = $i * 2520;
        echo "$j\n";
} 

答案 1 :(得分: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";
}

答案 2 :(得分: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++;
    }
}

答案 3 :(得分:1)

您只需要测试它们是9875的倍数,如果是,请递增j计数器。当j到达50时,主循环就会中断。

$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++;
}