Pagini recente » Cod sursa (job #30274) | Cod sursa (job #2226500) | Cod sursa (job #1901663) | Cod sursa (job #657726) | Cod sursa (job #2528678)
#include <bits/stdc++.h>
using namespace std;
const long long DIM = 5e4 + 5;
vector<long long> prm;
long long fth[DIM];
bool oki[DIM];
double dp[DIM];
int main(void) {
freopen("nummst.in", "r", stdin);
freopen("nummst.out", "w", stdout);
long long n; cin >> n;
long long vl = 0;
for (long long i = 2; i <= n && !vl; ++i)
if (n % i == 0)
vl = i;
for (long long i = 2; i < vl; ++i) if (!oki[i]) {
prm.push_back(i);
for (long long j = i + i; j <= vl; j += i)
oki[j] = true;
}
for (long long i = 1; i <= vl; ++i)
fth[i] = 1;
for (long long x : prm) {
for (long long i = vl; i >= 0; --i) {
for (long long y = x; y + i <= 1LL * vl; y *= x) {
if (dp[i + y] < dp[i] + log(1.0 * y)) {
dp[i + y] = dp[i] + log(1.0 * y);
fth[i + y] = y;
}
}
}
}
vector<long long> ans;
for (long long i = vl; i; i -= fth[i])
ans.push_back(fth[i] * (n / vl));
sort(ans.begin(), ans.end());
for (long long x : ans)
cout << x << " ";
return 0;
}