早教吧 育儿知识 作业答案 考试题库 百科 知识分享

求100到1000之间的素数#include"stdio.h"main(){inti,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);}}这个是正确的程序,我稍改了下,为什么不行了呢这是改了

题目详情
求100到1000之间的素数#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肯定不是质数。