Bachgold problem is very easy to formulate. Given a positive integer n represent it as a sum of maximum possible number of prime numbers. One can prove that such representation exists for any integer greater than 1.
Recall that integer k is called prime if it is greater than 1 and has exactly two positive integer divisors — 1 and k.
The only line of the input contains a single integer n (2 ≤ n ≤ 100 000).
The first line of the output contains a single integer k — maximum possible number of primes in representation.
The second line should contain k primes with their sum equal to n. You can print them in any order. If there are several optimal solution, print any of them.
5
2 2 3
6
3 2 2 2
题目大意:
给你一个数N,让你找到一个可能,用最多的素数的和来替代这个N.
即各个素数的==N;
思路:
肯定个数是N/2个,一直用2和3来组成这个数即可,尽量用2。
Ac代码:
#include<stdio.h>
#include<string.h>
using namespace std;
int n;
int main()
{
while(~scanf("%d",&n))
{
printf("%d\n",n/2);
while(n)
{
if(n==3)
{
printf("3 ");
break;
}
else printf("2 ");
n-=2;
}
printf("\n");
}
}