算法提高 素数求和
时间限制: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 }