私信TA

用户名:2950870451

访问量:24079

签 名:

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

  自我简介:

解题思路: 根据素数分布的规律来搞的(来源于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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区