C语言 · 素数求和

算法提高 素数求和  
时间限制:1.0s   内存限制:256.0MB
    
问题描述
  输入一个自然数n,求小于等于n的素数之和
样例输入
2
样例输出
2
数据规模和约定
  测试样例保证 2 <= n <= 2,000,000

作者注释:水平有限,此题有些不知所措——n较大时结果有误,因而后面两个测试点总是不过。

 1 #include<stdio.h>
 2 #include<math.h>
 3 int IsPrime(int n){
 4         int k=sqrt(n+1);
 5         for(int i=2;i<=k;i++){
 6             if(n%i==0){
 7                 return 0;
 8             }
 9         }
10         return 1;
11 }
12 int main(){
13     int n,sum=0;
14     scanf("%d",&n);
15     for(int i=2;i<=n;i++){
16         if(IsPrime(i)){
17             sum+=i;
18         }
19     }
20     printf("%d",sum);
21 }
原文地址:https://www.cnblogs.com/panweiwei/p/6445389.html