谁能告诉我第二个for循环发生了什么,是怎么输出100以内所有质数的?想知道一下原理,感谢大神
<?//求100以内质数for($i=1;$i<=100;$i){$k=0;for($j=1;$j<$i;$j){if($i%$j==0){$k++;}}if($k==1...
<?
//求100以内质数
for ($i = 1; $i <= 100; $i ) {
$k = 0;
for ($j = 1; $j < $i; $j ) {
if ($i % $j == 0) {
$k++;
}
}
if ($k == 1) {
echo $i;
echo " ";
}
}
?> 展开
//求100以内质数
for ($i = 1; $i <= 100; $i ) {
$k = 0;
for ($j = 1; $j < $i; $j ) {
if ($i % $j == 0) {
$k++;
}
}
if ($k == 1) {
echo $i;
echo " ";
}
}
?> 展开
2个回答
展开全部
原理很简单,对于一个数字n(也就是你上面的i),假定从2到n-1都不能被n整除,那么n就是质数,第二个循环就是计算余数的(假定i是19,内存循环就是计算2到18是否能被19整除)
注:你上面程序很多地方都错了。
1:质数是从2开始的,1不是质数,所以你$i和$j的初始值都应该是2,即for($j=2...
2、当检查到可以整除的时候,就该直接break跳出内层循环了,不需要继续执行下去。
3、从2检查到n-1是效率最低的方法,一般只需要检查2到平方根n就可以了,当然其它高效的方法很多,可以自己查一下。
注:你上面程序很多地方都错了。
1:质数是从2开始的,1不是质数,所以你$i和$j的初始值都应该是2,即for($j=2...
2、当检查到可以整除的时候,就该直接break跳出内层循环了,不需要继续执行下去。
3、从2检查到n-1是效率最低的方法,一般只需要检查2到平方根n就可以了,当然其它高效的方法很多,可以自己查一下。
追问
非常感谢!解答的很清晰
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询