//问: 如果有100个灯,走一次就关闭自己的倍数的灯, 然后+1 重新走 再次按倍数的关灯 到100个灯的时候这个灯是亮的还是关闭的 //答: 与自己走过的次数取模成功 然后累加取模成功的数量,再次与2取模如果成功那么就是亮的否则就是关闭的 function light($num) { $a = 1; for ($i=1; $i <= $num; $i++) { echo ‘<div style="width:20px;height:20px;background-color:#faa2f2;float:left;margin-left:10px"></div>‘; } echo ‘<br /><hr />‘; //$color = array(‘#f2f2f2‘,‘#a2a2a2‘); for ($z=1; $z <= $num; $z++) { for ($x=1; $x <= $z; $x++) { if ($z%$x == 0) { @$sum[$z] += 1; } //echo ‘<div style="width:20px;height:20px;background-color:#000;float:left;margin-left:10px"></div>‘; } for ($j=$z; $j <= $num; $j++) { if($j%$z == 0){ $color = ‘#f2f2f2‘; }else{ $color = ‘#faa2f2‘; } //echo ‘<div style="width:20px;height:20px;background-color:‘.$color.‘;float:left;margin-left:10px">‘.$j.‘</div>‘; } if($sum[$z]%2 == 0){ //echo ‘第‘.$z.‘次亮的‘; $last = ‘第‘.$z.‘次亮的‘; }else{ $last = ‘第‘.$z.‘次不亮的‘; } //echo ‘<br /><br />‘; } echo $last; } light(16); //求第十六次灯是否亮的
原文:http://my.oschina.net/Majw/blog/514520