御魂可以升星吗:求100到1000之间的素数

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 07:41:41
#include "stdio.h"
main()
{
int i,j,p;
for(i=100;i<=1000;i++)
{
p=0;
for (j=3;j<=i/2;j=j+2)
if(i%j==0)p=1;
if(p==0)
printf("%d\t",i);
}
}这个是正确的程序,我稍改了下,为什么不行了呢这是改了后的#include "stdio.h"
main()
{
int i,j,p;
for(i=100;i<=1000;i++)
{

for (j=3;j<=i/2;j=j+2)
if(!(i%j==0))

printf("%d\t",i);
}
}

p=0;
for (j=3;j<=i/2;j=j+2)
if(i%j==0)p=1;
if(p==0)
printf("%d\t",i);

上面是原来的内容,是指3~i/2之间的所有奇数都不能整除i,i才是质数。这是正确的。

你改成下面的形式,

for (j=3;j<=i/2;j=j+2)
if(!(i%j==0))

printf("%d\t",i);

其含义则变为3~i/2之间的只要有任意一个奇数不能整除i,i就是质数。这是错误的,例如,100不能被9整除,但100肯定不是质数。