求100~200的素数,为什么这样写不对??
#include"stdio.h"#include"math.h"
void main()
{
int m=100,i,k;
k=sqrt(m);
do
{
for(i=2; i<=k; i++)
if(m%i == 0)
{break;}
if(i>k)
{
printf("%d\t",m);
}
}while(m++ <= 200);
}
为什么以上程式,运行结果会比正确答案多了以下几个数字,求详解,{:5_92:}盼复
121
143
169
187
本帖最后由 swsm 于 2014-2-16 15:19 编辑
#include"stdio.h"
#include"math.h"
void main()
{
int m=100,i,k;
k=sqrt(m); //你再这个地方就把k给固定成10了,而后来m++了,k还最大是10,所以121的11因数 没有被检测出来
do
{
for(i=2; i<=k; i++)
if(m%i == 0)
{break;}
if(i>k)
{
printf("%d\t",m);
}
m++; //加这一句
k=sqrt(m); //再加这一句
}while(m <= 200); //再改这一句
}
//这样就可以了,再交流
:handshake原来如此,感谢感谢,又可以继续了,YEAH!!
页:
[1]