标题:求素数的问题
只看楼主
jtsqrj
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2016-10-13
结帖率:25%
已结贴  问题点数:5 回复次数:5 
求素数的问题
琢磨了半天也不能理解。。。
求素数的一部分代码:
for(m=2;m<=100;m++){
n=sqrt(m);
for(i=2;i<=n;i++)
   if(m%i==0)
     break;
if(i>n)        #为什么这里i>n就说明了m是素数,上一个for循环不是要求i<=n吗?
   printf("%6d",m);
2016-11-16 18:29
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
得分:2 
i<=n后面还有i++

早知做人那么辛苦!  当初不应该下凡
2016-11-16 18:34
jtsqrj
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2016-10-13
得分:0 
回复 2楼 炎天
for里面不是有i<=n吗,如果i=7,n就是根号7,那么i=2的时候还可以i++吗?
2016-11-16 18:39
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
得分:0 
可以的,(i=2)<=(n=2) 满足判断条件

for(i=2;i<=n;i++)  不考虑for下面的语句,循环最后i=n+1;
回到你的代码,如果break执行到了i就达不到n+1了

[此贴子已经被作者于2016-11-16 18:59编辑过]


早知做人那么辛苦!  当初不应该下凡
2016-11-16 18:52
哈斯佛道
Rank: 2
等 级:论坛游民
帖 子:23
专家分:81
注 册:2016-8-15
得分:2 
看最后一次循坏
2016-11-16 19:09
qq152110
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2016-11-19
得分:2 
#include<stdio.h>
int main()
{
    int i,k;
    for(i=2;i<=100;i++)
        {
    for(k=2;k<i;k++)
    {
        if(i%k==0)
        {
            break;
        }
        else if(k=i-1)
        {
            printf(" %d",i);
        }
    }
}
2016-11-19 13:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-471208-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 2.072406 second(s), 10 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved