蓝太阳


私信TA

用户名:uq_37468058544

访问量:702

签 名:

愿为共产主义奋斗终生。

等  级
排  名 10210
经  验 1103
参赛次数 0
文章发表 5
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:
此算法进行了简单的优化,只找n以内的奇数,并且验证一个数i是否为素数时用i%j(j=2,3,4…,i/2)。(实际上只需增加到i的平方根,因为如果i能拆成两个整数的积,通常这两个整数位于i的平方根的两边,但需要使用math.h中的sqrt函数来求平方根)

参考代码:

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    if(n==2)
        printf("2\n");
    if(n>=2)
        printf("2\n3\n");//素数2,3单独判断并输出
    for(int i=5;i<=n;i+=2)//此循环找出2,3之后的其他素数,因其他素数只可能为奇数,所以从5开始判断,i每次加2
    {
        int j;
        for(j=2;j<=i/2;j++)                         //此循环判断i是否为素数,通过i%j得到的余数是否为0来判断,
            if(i%j==0) break;                    //j从2开始每次加1,只需增加到i/2,之后的当然不可能余数为0。
        if(j==i/2+1)//注意i为素数时j等于i/2后又加了1。
            printf("%d\n",i);
    }
    return 0;
}


 

0.0分

1 人评分

  评论区

  • «
  • »