解题思路:
此算法进行了简单的优化,只找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 人评分
大小写转换 (C语言代码)浏览:859 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:756 |
WU-蓝桥杯算法提高VIP-企业奖金发放 (C++代码)浏览:1175 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:711 |
众数问题 (C语言代码)浏览:673 |
C语言程序设计教程(第三版)课后习题9.2 (C语言代码)浏览:610 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:840 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:546 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:481 |
1073题解浏览:624 |