題意解釋
這道題是主要是看有幾種順序排列的素數(shù)相加能得到目標(biāo)數(shù)目的題爽丹。
題目的關(guān)鍵在于 A.求素數(shù) B. 累加看有幾種累加方法.
收獲
這道題的代碼是完全是自己的朋鞍,思路也是自己來的敌厘。代碼風(fēng)格借鑒了之前的之前做前兩道題時參考的代碼風(fēng)格芹壕。主要功能單獨提出來寫,這樣做以后發(fā)現(xiàn)整體代碼的可讀性上升了芍碧。以及痕惋,對于水題,覺得重點在于翻譯題吧皆怕,并沒有考到太多的計算機的知識毅舆。
AC代碼
#include <iostream>
#include <stdio.h>
#define MAXN 10005
using namespace std;
int prime[MAXN];
int if_is_prime_number(int n){
for (int i = 2;i * i <= n;i++) {
if (n % i == 0) return 0;
}
return 1;
}
void init(){
int i = 0;
int j = 2;
while(i < MAXN){
if(if_is_prime_number(j) == 1){
prime[i] = j;
i++;
}
j++;
}
}
// prime is prime tables
int solve(int n){
int sum;
int result;
result = 0;
if(n == 1)return 0;
for(int i = 0; i < n; i++){
sum = 0;
int j = i;
while(sum < n){
sum = sum + prime[j];
if(sum == n)result++;
j++;
}
}
return result;
}
int main()
{
int judgenumber;
int i,result;
init();
while(true){
cin >> judgenumber;
if(judgenumber == 0) return 0;
result = solve(judgenumber);
cout << result << endl;
}
return 0;
}