ACM 入门1170

/*题目描述 求100~200之间的全部素数,
输入 无
输出 100~200之间的全部素数,一个素数占一行。
样例输入 无
样例输出
101
103

197
199 */

首先,咱们先用整数大法来判定

#include<stdio.h>
int main()
{
    int n=100,i=2;   
    for (n=100;n<=200;n++)     //代表循坏从100执行至200
        {
            for (i=2;i<n;i++)  //判定条件:n是否在2或n-1之间能整除
           {
            if (n%i==0) break; // 如能整除,停止语句,注意,词语句只会影响第二个for语句
           }
           if (i>=n) printf("%d\n",n); //如果i>n-1了,在判定条件之外,证明其是素数
        }
    return 0;
}

当然还有另外一种方法,平方根大法,此种方法求起来速度更快;

#include<stdio.h>
#include<math.h>
int main()
{
    int n=100,i=2,x;
    for (n=100;n<=200;n++)                 //代表循坏从100执行至200
        {
            x=sqrt(n);                     //x是n的平方根形式的整数部分,这个不能放到int语句下方,否则x的值就成唯一常数,没意义了
            for (i=2;i<=x;i++)             //判定条件:i是否在2或平方根n之间能被n整除
           {
            if (n%i==0) break;             // 如能整除,停止语句,注意,词语句只会影响第二个for语句
           }
           if (i>x) printf("%d\n",n);      //如果i>n-1了,在判定条件之外,证明其是素数
        }
    return 0;
}

喜欢就评论下方把

猜你喜欢

转载自blog.csdn.net/qq_42766201/article/details/83500573
ACM