西工大 POJ Sum of Consecutive Prime Numbers
2014-04-27 00:32
316 查看
什么都不说直接上代码
#include <iostream>
#include <stdio.h>
using namespace std;
int prime[1229]; //这里的长度是后来计算出来的,为了省内存。
int count = 0;
//判断k是否为素数,模它前面的素数,如果得到0说明它不是素数,反之这是素数。
bool isPrime(int k)
{
for (int i = 0; i < count; i++) {
if (k % prime[i] == 0) {
return false;
}
}
return true;
}
int main()
{
//开始构建素数表
for (int i = 2; i <= 10000; i++) {
if (isPrime(i)) {
prime[count] = i;
count++;
}
}
int input;
while (cin>>input) {
if (input == 0) {
return 0;
}
int total = 0;
for (int i = 0; prime[i] <= input; i++) {
int sum = 0;
for (int j = i; sum <= input; j++) {
sum += prime[j];
if (sum == input) {
total++;
break;
}
}
}
cout<<total<<endl;
}
}
什么?你不懂什么是素数表?要百度干嘛的?
想法都在代码里了我就不讲了。
#include <iostream>
#include <stdio.h>
using namespace std;
int prime[1229]; //这里的长度是后来计算出来的,为了省内存。
int count = 0;
//判断k是否为素数,模它前面的素数,如果得到0说明它不是素数,反之这是素数。
bool isPrime(int k)
{
for (int i = 0; i < count; i++) {
if (k % prime[i] == 0) {
return false;
}
}
return true;
}
int main()
{
//开始构建素数表
for (int i = 2; i <= 10000; i++) {
if (isPrime(i)) {
prime[count] = i;
count++;
}
}
int input;
while (cin>>input) {
if (input == 0) {
return 0;
}
int total = 0;
for (int i = 0; prime[i] <= input; i++) {
int sum = 0;
for (int j = i; sum <= input; j++) {
sum += prime[j];
if (sum == input) {
total++;
break;
}
}
}
cout<<total<<endl;
}
}
什么?你不懂什么是素数表?要百度干嘛的?
想法都在代码里了我就不讲了。
相关文章推荐
- 用单调栈解决最大连续矩形面积问题
- 2632 Crashing Robots的解决方法
- 1573 Robot Motion (简单题)
- poj 2485 Highways
- poj 1511 Invitation Cards
- poj1042
- poj1080
- poj1088
- 西工大 poj sticks
- POJ#1001
- POJ#1002
- poj1063 Flip and Shift
- poj 3249 Test for Job 最长路
- 状态压缩DP poj 2817 WordStack 入门题
- POJ 2406 Power Strings
- POJ 2352 Stars
- POJ 3264 Balanced Lineup
- POJ 1056 IMMEDIATE DECODABILITY
- POJ1182 食物链 (并查集)*新方法
- POJ1182 食物链 (并查集)*新方法