除了这个凌乱的代码之外的任何其他更好的方法来编写PHP脚本,找到可从1到12整除的最小数字

时间:2014-04-21 16:59:00

标签: php

我的想法是找到可从1到12整除的最小数字。 问题是,我必须一直使用if条件 - 只要数字范围增加。 有没有比这个凌乱的代码更好的方法。从0级开始是一个初学者。

<?php
for ($i = 1; $i <= 999999; $i++) {
  $num = 12 * $i;

  if ($num % 12 == 0) {
    if ($num % 11 == 0) {
      if ($num % 10 == 0) {
        if ($num % 9 == 0) {
          if ($num % 8 == 0) {  
            if ($num % 7 == 0) {
              if ($num % 6 == 0) {
                if ($num % 5 == 0) {
                  if ($num % 4 == 0) {  
                    if ($num % 3 == 0) {
                      if ($num % 2 == 0) {
                        echo $num;
                        exit();
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
?>

4 个答案:

答案 0 :(得分:2)

也许是这样的:

$max = 12;
$num = $max;
while(true) {
    for($i = 2; $i <= $max; ++$i) {
        if ($num % $i !== 0) break;
    }
    if ($i > $max) break;
    $num += $max;
}

var_dump($num);

答案 1 :(得分:1)

你走了:

for ($i = 1, $num = 12; $i <= 999999; $i++, $num += 12) {
  if ($num % 11 || $num % 10 || $num % 9 || $num % 8 || $num % 7)
    continue;
  echo $num;
  break;
}

答案 2 :(得分:0)

<?php
 for ($i = 1; $i < 999999; $i++) {
     $num = 12 * $i;
     $divisible = true;
     for ($j = $num; $j > 1; $j --) {
         if ($num % $j !== 0) {
             $divisible = false;
             break;
         }
     }
     if ($divisible === true) {
        echo $num;
        break;
     }
 }

答案 3 :(得分:0)

我使用函数+递归使其更灵活:

function foo($check, $max, $end) {
    if ($check%$max == 0 && $max >= $end){
            if ($max == $end) {
                    return $check;
            }
            return foo($check, $max-1, $end);
    }    
}

for ($i=1; $i<=999999;$i++) {
    $res = foo($i, 12, 2);
    if ($res) break;
}
echo $res;
?>