0
点赞
收藏
分享

微信扫一扫

UVA 11752 The Super Powers——合数

星河出山 2022-08-17 阅读 17


#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <set>
#include <climits>
#define OUT freopen("out.txt", "w", stdout)
using namespace std;
typedef unsigned long long ull;
const double key = log(1.0 * ULONG_LONG_MAX - 1);
const int maxn = 65;
bool isprime[maxn];
int prime[maxn], primecnt, he[maxn], hecnt;
void init() {
memset(isprime, true, sizeof(isprime));
primecnt = hecnt = 0;
for (int i = 2; i < maxn; i++) {
if (isprime[i]) {
prime[++primecnt] = i;
for (int j = i * 2; j < maxn; j += i) isprime[j] = false;
}
else he[++hecnt] = i;
}
}
ull ipow(ull x, int y) {
ull ans = 1;
while (y) {
if (y & 1) ans *= x;
x *= x;
y >>= 1;
}
return ans;
}
set<ull> s;
set<ull>::iterator it;
int main() {
init();
s.clear();
s.insert(1);
for (int i = 2; i < (1<<16); i++) {
int limit = (int)ceil(key / log(i));
for (int j = 1; j <= hecnt && he[j] < limit; j++) {
s.insert(ipow(i, he[j]));
}
}
for (it = s.begin(); it != s.end(); it++) cout << *it << endl;
return 0;
}


举报

相关推荐

0 条评论