Pagini recente » Cod sursa (job #928947) | Cod sursa (job #2661226) | Cod sursa (job #2539004) | Cod sursa (job #3181611) | Cod sursa (job #1436410)
#include<stdio.h>
#include<vector>
using namespace std;
int N, g=1, exp[4000];
vector<int> primes;
bool pr[4000];
int main() {
freopen("nummst.in","r",stdin);
freopen("nummst.out","w",stdout);
scanf("%d",&N);
for(int i=2;i<N;++i) {
if(N%i == 0) {
g = N/i;
break;
}
}
N = N/g;
if(N==2) {
printf("%d %d\n",g,g);
return 0;
}
for(int i=2;i<=N;++i) {
if(!pr[i]) {
primes.push_back(i);
for(int j=2;i*j<=N;++j) {
pr[i*j] = 1;
}
}
}
int sum = N;
bool ok = 1;
while(sum && ok) {
ok = 0;
for(int k=0;k<primes.size();++k) {
int p = primes[k];
if(!exp[k]) {
if(sum >= p) {
sum -= p;
exp[k] = p;
ok = 1;
}
} else {
if(sum >= (p-1)*exp[k]) {
sum -= (p-1)*exp[k];
exp[k]*=p;
ok = 1;
}
}
}
}
for(int i=0;i<primes.size();++i) {
if(exp[i]) {
printf("%d ",g*exp[i]);
}
}
if(sum) {
printf("%d ",g*sum);
}
return 0;
}