Sum of Consecutive Prime Numbers UVA

来源:互联网 发布:iphone4s数据恢复 编辑:程序博客网 时间:2024/06/17 12:18

首先使用打表法将范围内的所有的素数都求出来,然后利用互动窗口来求解即可,具体实现见如下代码:

#include<iostream>#include<vector>#include<string>#include<set>#include<stack>#include<queue>#include<map>#include<algorithm>#include<cmath>#include<iomanip>#include<cstring>#include<sstream>#include<cstdio>#include<deque>#include<functional>using namespace std;const int maxn = 10010;vector<int> prime;bool vis[maxn];void Init(){memset(vis, 0, sizeof(vis));vis[0] = vis[1] = 1;int up = floor(sqrt(maxn) + 0.5);for (int i = 2; i <= up; i++){if (!vis[i]){for (int j = i*i; j <= 10000; j += i)vis[j] = 1;}}for (int i = 2; i <= 10000; i++)if (!vis[i]) prime.push_back(i);}int main(){Init();int N;while (cin >> N){if (N == 0) break;int l, r;l = r = 0;int sum = prime[0];int ans = 0;while (l<=r&&r<prime.size()&&prime[r]<=N){if (sum == N){ans++;sum -= prime[l];l++;}else if (sum < N){r++;sum += prime[r];}else{sum -= prime[l];l++;}}cout << ans << endl;}return 0;}

原创粉丝点击