急急急!判断101-200之间有多少个素数,并输出所有素数。

来源:百度知道 编辑:UC知道 时间:2024/07/02 04:03:58
判断101-200之间有多少个素数,并输出所有素数。

#include"stdio.h"

#include"math.h"

main()

{int n,m;

for(n=101;n<=200;n=n+2) //这里为什麽要写n=n+2啊

{ for(m=2;m<n;m++) //这里的变量m又是什麽意思

if(n%m==0) break; //n%m=0 就break 是为什麽

if(m==n) printf("%d\t",n); //为什麽m=n 相等就打印结果

}

}

这一题看不懂啦!
谁来解救我~~ help me~~

1 偶数当然不会是素数,所以n用来遍历101到200之间的奇数就行了
2 该算法是用一个待测的数不停的处以从2到它本身之间的数,m就是用来遍历这个除数,如果n不能被任何m整除,那么n就是素数
3 该行的意思是一旦n能被一个数整除,那么这个数肯定不是素数了,这时就不要遍历后面的m了,直接结束内层循环,跳到下一个要检查的数字上
4 此时,n不能被任何小于他的数整除,所以它肯定是素数,于是把它打印出来。

如果一个数是素数,那么它只能被1和它本身整除。
#include"stdio.h"

#include"math.h"

main()

{int n,m;

for(n=101;n<=200;n=n+2) //为了减少循环次数,因为偶数都是2的倍数

{ for(m=2;m<n;m++) //m为每一个>=2,<n的数,用于作n的除数,看能不能使n整除
if(n%m==0) break; //找到了能使n(当m<n时)被整除的数,可提前退出这一层循环,进入下一个数的判断
if(m==n) printf("%d\t",n); //若前面(n%m=0)一直没有找到,直到n=m时,退出了for(m=2;m<n;m++) 循环,说明这个数只能被1和它本身整除。
}

}

因为n从101开始,你要明白偶数除了2其他D都不可能是素数.
所以101-200之间输出素数就要从奇数里面找
这里的m从2取到n,然后用n%m判断n能不能除尽m;
如果能n就不是素数,break跳出循环再判断下一个数也就是n+2
一直取m,取到m=n的时候,这个时候就能判断n就是素数了.

n=n+2表示只判断基数,因为偶数至少可以被2整除,那么就肯定不是素数。
m:在n内的任意一个2--n的数,看是否能被n整除。
break:因为如果出现m被n整除的了,那么m就肯定不是素数了,循环就没有意义了。
如果m