#include <iostream> using namespace std; //埃氏算法 int arr[2000001]; int main() { long long n,ans=0; scanf("%lld",&n); for(int i=2;i<=n;i++){ if(arr[i]==0){ for(int j=2*i;j<=n;j+=i){ arr[j] = 1; } } } for(int i=2;i<=n;i++){ if(arr[i]==0){ ans+=i; } } printf("%lld",ans); return 0; }
0和1不是素数,从2到n依次将最小的数的倍数去掉,剩下的就是素数