poj 2739 Sum of Consecutive Prime Numbers
来源:互联网 发布:linux界面编程 编辑:程序博客网 时间:2024/05/21 22:57
//题目给出一个数,让你求连续的素数相加的和等于这个数的字串个数!(要求是连续的)//例如 41 41 = 2 + 3 + 5 + 7 + 11 + 13 41 = 11 + 13 + 17 41 = 41 这样的素数字串有3个 #include "iostream"#include "cmath"#include "memory.h"using namespace std;int primer[5000];bool is_primer(int num){ int i; if (num == 1) return false; else { int n = sqrt(double(num)); for (i = 2; i <= n; i++) { if (num % i == 0) return false; } return true; }}/*//筛子法求素数 void is_primer(){ int num[100000000]; memset(num, 1, sizeof(num)); int i, j; num[0] = 0, num[1] = 0; for (i = 2; i < 100000000; i++) { if (num[i]) { for (j = i * 2; j < 100000000; j += i) num[j] = 0; } }}*/int main(){ int i, j, k, num, count, sum; bool flag; memset(primer, 0, sizeof(primer)); for (i = 1, j = 0; i <= 10000; i++) { if (is_primer(i)) { primer[j] = i; j++; } } while (cin >> num && num) { count = sum = 0; flag = false; for (i = 0; i < j; i++) { sum = 0; if (flag) break; for (k = i; k < j; k++) { if (primer[k] > num) { flag = true; break; } sum += primer[k]; if (sum == num) { count++; break; } if (sum > num) break; } } cout << count << endl; } //system("pause");}