#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<map> #include<set> #include <algorithm> using namespace std; typedef long long ll; typedef unsigned long long ull; const int maxn = 65; ll notprime[maxn]; int tot ; bool num[maxn]; set<ull> ans;
ull quickpow(ll a,ll n) { ull ans=1; while(n) { if (n&1) ans = ans * a; a = a * a ; n >>= 1; } return ans; }
void init() { int i,j; for ( int i = 2; i <= maxn ; i ++ ) if (num[i]) notprime[++tot]=i; else for (int j = 2 *i ; j <= maxn ; j += i ) num[j]=true; ans.insert(1); for (int i = 2 ; i < (1<<16);i ++) { int maxx = ceil(64*log(2.0)/log(i*1.0)); for (int j = 4 ; j < maxx ; j ++) { if (num[j]) ans.insert(quickpow(i,j)); } } }
int main() { init(); int n; for (auto i : ans) { printf("%llu\n",i); }