poj_2739 素数打表

来源:互联网 发布:ios商城源码 编辑:程序博客网 时间:2024/06/05 03:39

方法:先算出10000以内的所有素数存表,然后每输入一个数n,从表头指针i和表尾指针j开始找符合的区间。

code:

#include <iostream>#include <math.h>#include <fstream>using namespace std;bool isPrime(int n){if (n == 2)return true;for (int i = 2; i < (int)sqrt((double)n)+1; i++){if (n%i == 0)return false;}return true;}int main(){fstream in("input.txt");int j=0,n,sum=0;int prime[1229],len=1229;//构造素数表for (int i = 2; i < 10000; i++){if (isPrime(i))prime[j++]=i;}while (cin >> n){if (!n)break;int ans = 0;for (int i = 0; i < len; i++){sum = 0;for (int j = i; j < len; j++){sum += prime[j];if (sum > n)break;else if (sum == n){ans++;break;}}}cout << ans << endl;}//system("pause");return 0;}



0 0