| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 634 人关注过本帖
标题:请大家帮解决一下,先谢了
只看楼主 加入收藏
tongxun
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-3-10
收藏
 问题点数:0 回复次数:5 
请大家帮解决一下,先谢了
#include <math.h>
main()
{
int m,i,k;
scanf("%d",&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>k) printf("%d is a prime muber\n",m);
else printf("%d is a not prime mumber\n",m);
}
在第7行的循环里i<=k,
但在第9行的选择语句的条件里i>k.
我想了很久都想不出,这是为什么,请大家帮我解释一下。
2005-03-10 12:17
编程呆子
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2005-1-6
收藏
得分:0 
这是求一个数是否是素数的题!!!
在7行里的i<k是要,求除了1和它本身的其它数是否能补整除,如果可以的话,就说明不是素数,否则就有可能是,这就要看下面的限制了,9行里的i>k就是这个限制作用,一定要在要整个循环结束时才对,
例如:8,在循环没有结束时,第一个条件就成立了,但它不是素数,它没有满虽下一个条件,~~~~~
2005-03-10 12:32
tongxun
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-3-10
收藏
得分:0 
k=sqrt(m);k是一个确定的数,在循环里i<=k;如果循环结束,除非i++,否则i>k,做为第二个条件是怎么来的?
2005-03-10 13:12
编程呆子
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2005-1-6
收藏
得分:0 
在for里的第三个表达式不就是i++吗,它改变了i的值啊,
所以当整个循环结束后,i的值才大于k
2005-03-10 14:09
tangzhongliu
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2005-2-10
收藏
得分:0 
我认为i从2到k循环中没有能被m整除的,说明是素数,循环结束,i还要再自加,就变成了i+1了当然是大于k了阿,不知道我说的对不对。

坚持,坚持,再坚持。。。
2005-03-11 09:37
时空之蕊
Rank: 2
等 级:新手上路
威 望:3
帖 子:691
专家分:0
注 册:2004-10-31
收藏
得分:0 
因为编成的风格不好所以没有看懂吧!我改了该
#include <math.h>
main()
{
int m,i,k;
scanf("%d",&m);
k=sqrt(m);
for(i=2;i<=k;i++)
{
      if(m%i==0)
            break;
}
if(i>k)
       printf("%d is a prime muber\n",m);
else
        printf("%d is a not prime mumber\n",m);
}

现在应该知道为什么把

[此贴子已经被作者于2005-3-11 10:55:42编辑过]



我渴望掌控时空的核心——用最先进的技术,打造无比美丽的世界!
2005-03-11 10:54
快速回复:请大家帮解决一下,先谢了
数据加载中...
 
   



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

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