解题思路: 根据素数分布的规律来搞的(来源于CSDN)
参考代码:
#include <stdio.h> #include <math.h> int main(){ int i,j,n; long long sum = 0; scanf("%d", &n); for(i = 2; i <= n; i++){ if(i == 2 || i == 3){ sum += i; continue; } if(i%6 != 1 && i%6 != 5){ //不在6的倍数的左侧和右侧的数一定不是素数 continue; } for(j = 5; j <= sqrt(i); j+=6){ //在6的倍数的左侧和右侧的数不一定是素数 if(i%j == 0 || i%(j+2) == 0){ break; } } if(j > sqrt(i)){ sum += i; } } printf("%lld", sum); return 0; }
0.0分
0 人评分
简单编码 (C++代码)浏览:730 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:556 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:1485 |
字符逆序 (C语言代码)浏览:706 |
完数 (C语言代码)浏览:757 |
a+b浏览:452 |
打印十字图 (C语言代码)浏览:2822 |
1050题解(结构体数组与结构体指针的使用)浏览:1216 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:755 |
C二级辅导-求偶数和 (C语言代码)浏览:707 |