numbers, so neither 7 + 13 nor 3 + 5 + 5 + 7 is a valid representation for the integer 20.
Your mission is to write a program that reports the number of representations for the given positive integer.
2 3 17 41 20 666 12 53 0Sample Output
1 1 2 3 0 0 1 2
#include<iostream>
using namespace std;
const int maxp = 2000, n = 10000;
int prime[maxp], t = 0;
bool isprime(int k)
{
for(int i = 0; i < t; i++)
{
if(k % prime[i] == 0)
return false;
}
return true;
}
int main()
{
for(int i = 2; i <= n; i++)
{
if(isprime(i))
prime[t++] = i;
}
prime[t++] = n+1;
int m;
cin >> m;
while(m)
{
int ans = 0, p=0;
int cnt = 0;
for(int i=p; ; i++)
{
if(m >= prime[i])
cnt += prime[i];
if(cnt == m)
{
ans++;
i = p;
p++;
cnt = 0;
continue;
}
if(m < cnt)
{
i = p;
p++;
cnt = 0;
continue;
}
if(m < prime[i])
{
cout << ans << endl;
break;
}
} cin >> m;
}
return 0;
}
647



被折叠的 条评论
为什么被折叠?



