解题思路: 根据素数分布的规律来搞的(来源于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二级辅导-同因查找 (C++代码)(42的倍数,,所以直接递加42输出)浏览:1092 |
C语言训练-排序问题<2> (C++代码)(sort函数)浏览:1572 |
C二级辅导-同因查找 (C语言代码)浏览:660 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1053 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:654 |
数对 (C语言代码)浏览:697 |
1052题解(链表操作)浏览:651 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:549 |
简单的a+b (C语言代码)浏览:504 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:500 |