求100~200之间的素数

首先来说一下素数的定义:只能被1和本身整除的数称为素数。

来看代码:

#include <stdio.h>
main()
{
    int m, i, n=0;       //m表示需要判断的数字, i表示被m除以的数(即为判断数),n记录次数
    for (m=101; m<=200; m=m+2)
    {
        if(n%10==0)printf("\n");  //表示每输出10个数换一行
    for(i=2;i<m;i++)        //此处 i<m 是指被除数应该小于除数,即m应该跟比自己小的数字判断
        if(m%i==0)break;     //当m%i==0时,此时m不为素数了。
    if(i>=m)          //重点理解: i通过前面的if语句循环到m-1时都未能break退出函数,说明此时的m为素数,即i=m时可以输出m的值
       {
        printf("%d\t",m);
        n=n+1;
       }
    }
    printf("\nprime number =%d\n",n);
}

解析代码:   为什么此处是i>=m :

    if(i>=m)          //重点理解: i通过前面的if语句循环到m-1时都未能break退出函数,说明此时的m为素数,即i=m时可以输出m的值
       {
        printf("%d\t",m); n=n+1; }

  此前已经有一个for循环语句了,当m%i==0时退出当前循环,但是如果能运行到if()语句这里,说明前面没有能使m被整除的数,即m为素数。

届时只需要if(i >= m)成立输出m就行

猜你喜欢

转载自www.cnblogs.com/yhc99/p/8998117.html