| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 712 人关注过本帖
标题:问傻问题的我又来了。。关于循环输出质数的,出现了死循环。。
只看楼主 加入收藏
kvains
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-9-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
问傻问题的我又来了。。关于循环输出质数的,出现了死循环。。
#include<stdio.h>
int main()
{
    int n ,i;
    n=0;

    for(n=100;99<n<201;n++)
        {
            for(i=1;i<=n;i++)
            if(n%i==0)break;
            if(i>n-1)printf("%d\n",n);
    }
    return 0;
}

改了很多次了。。也对着书看了很久。。哪里有问题呢?
2013-09-25 00:08
ming10086
Rank: 2
等 级:论坛游民
帖 子:5
专家分:15
注 册:2013-9-11
收藏
得分:6 
在你的程序中:你没发现这句话有问题吗??
for(i=1;i<=n;i++)
    if(n%i==0)break;
无论n的值为多少,由于你的i的初始值为1,所以if(n%i==0)break;这句话永远都会执行,
解决方法可以用for(i=2;i<=n;i++)。其实也没必要让i一直加到n,让i一直加n/2还没被整除,那么这个n一定是个素数,
还有也可以让i加到sqrt(n),这个表示根号下n。让i一直加sqrt(n)还没被整除,那么这个n也一定是个素数。
2013-09-25 01:53
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:7 
2楼说的是个问题,但不是照成死循环的原因。死循环是因为这句99<n<201

总有那身价贱的人给作业贴回复完整的代码
2013-09-25 04:04
kvains
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-9-21
收藏
得分:0 
回复 3楼 embed_xuel
没错!! 我把99〈去掉后,就正常了!!请问,这是为什么呢?
2013-09-25 12:41
小小程序猿
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:1
帖 子:755
专家分:2785
注 册:2013-7-18
收藏
得分:7 
以下是引用kvains在2013-9-25 12:41:49的发言:

没错!! 我把99〈去掉后,就正常了!!请问,这是为什么呢?


首先你 n 的初值就是100,肯定是大于99的

其次,如果你想写99<n<200的话,应该用连接词&&

孤独与寂寞是催化一个人迅速成长的良药,没有之一
2013-09-25 12:44
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 4楼 kvains
你多看看书和别人的代码吧

总有那身价贱的人给作业贴回复完整的代码
2013-09-25 12:45
kvains
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-9-21
收藏
得分:0 
回复 5楼 小小程序猿
明白了。。这就是语法。。多谢了~!!
2013-09-25 12:53
kvains
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-9-21
收藏
得分:0 
回复 6楼 embed_xuel
谢谢~!!也许有些问题到时候就明白了。。
2013-09-25 12:54
林凡
Rank: 2
等 级:论坛游民
帖 子:31
专家分:61
注 册:2013-7-29
收藏
得分:0 
回复 楼主 kvains
/**********************************
*******函数名: int main()
*******功能:输出质数
**********************************/
#include<stdio.h>
int main()
{
    int n ,i;
    n=0;

    for(n=100;n<201;n++)
        {
            for(i=2;i<=n;i++)
            if(n%i==0) break;
            if(i>=n) printf("%d\n",n);
        }
    return 0;
}
2013-09-25 22:05
林凡
Rank: 2
等 级:论坛游民
帖 子:31
专家分:61
注 册:2013-7-29
收藏
得分:0 
问题很明显for()语句中的条件,99<n<201,改为n<201,就对了,就给分啊!!!
2013-09-25 22:06
快速回复:问傻问题的我又来了。。关于循环输出质数的,出现了死循环。。
数据加载中...
 
   



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

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