题意解释
这道题是主要是看有几种顺序排列的素数相加能得到目标数目的题。
题目的关键在于 A.求素数 B. 累加看有几种累加方法.
收获
这道题的代码是完全是自己的,思路也是自己来的。代码风格借鉴了之前的之前做前两道题时参考的代码风格。主要功能单独提出来写,这样做以后发现整体代码的可读性上升了。以及,对于水题,觉得重点在于翻译题吧,并没有考到太多的计算机的知识。
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;
}
网友评论