菜鸟的问题,大家解释以下,实在是不知道为什么??
/*判断m是否素数*/
#include <math.h>
main()
{
int m,i,k;
scanf("%d",&m);
k=sqrt(m);
for(i=2;i<=k;k++)
if(m%i==0)break;
if(i>k) printf("%d is a prime number\n",m);
else
printf("%d is not a prime number\n",m);
}
这里的(i>k) printf("%d is a prime number\n",m);
为什么 i>k 就确定是素数???
问题点数:10、回复次数:5Top
1 楼llf_hust()回复于 2006-03-08 23:07:44 得分 3
为什么 i>k 就确定是素数???
//这说明i在2到K的范围了找不到能除进他的数,当然就是素数Top
2 楼Vo5(娜娜)回复于 2006-03-08 23:14:12 得分 2
如果一个整数在2到它的平方根的范围了找不到能除尽他的数,当然就是素数
Top
3 楼ugg(逸学堂(exuetang.net))回复于 2006-03-09 09:50:34 得分 2
娜娜同学正解....
关于
求解素数几种方法
请参考
http://www.exuetang.net/article/View.aspx?NewsID=191Top
4 楼ichend(心雅)回复于 2006-03-09 11:42:58 得分 3
同意上楼观点。
但发现楼主程序有问题,在输入质数后无法输出printf语句导致死循环!
for(i=2;i<=k;k++) //error这样i的值永不可能大于k
for(for(i=2;i<=k;++i)//正解
除此之外发现2warning(s)
给出我的程序 稍加改动:)
#include <math.h>
#include<stdio.h>
main()
{
int m,i,k;
scanf("%d",&m);
k=(int)sqrt(m);
for(i=2;i<=k;++i)
if (m%i==0)
{printf("%d is not a prime number\n",m);break;}
if (i>k)
{printf("%d is a prime number\n",m);}
}
编译成功!!
Top
5 楼ichend(心雅)回复于 2006-03-09 11:43:44 得分 0
void main()
Top




