谁能告诉我第二个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 "  ";
}
}
?>
展开
 我来答
syht2000
高粉答主

2018-09-29 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
原理很简单,对于一个数字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就可以了,当然其它高效的方法很多,可以自己查一下。
追问
非常感谢!解答的很清晰
水里风
2018-09-29 · TA获得超过1528个赞
知道小有建树答主
回答量:1294
采纳率:80%
帮助的人:524万
展开全部
i从1到100遍历,j从1到i-1遍历,在j的循环里每次把i对j求余,如果结果为0说明此时i可以整除j,则k++。如果i是质数的话只有1能被整数,所以j循环以后k应该为1。如果i不是质数则k>1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式