问题描述
输入一个自然数n,求小于等于n的素数之和
样例输入
2
样例输出
2
数据规模和约定
测试样例保证 2 <= n <= 2,000,000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <iostream> using namespace std; int v[2000001]; int main() { int n; cin >> n; for(int i = 2; i * i <= n; i++) { if(v[i] == 1) continue; for(int j = i * i; j <= n; j = j + i) v[j] = 1; } long long int cnt = 0; for(int i = 2; i <= n ; i++) { if(v[i] == 0) { cnt += i; } } cout << cnt; return 0; } |
❤ 点击这里 -> 订阅《PAT | 蓝桥 | LeetCode学习路径 & 刷题经验》by 柳婼