直接打表,排序,去重,输出.
#include <iostream>
#include <cstdio>
#include <cmath>
#include <limits.h>
#include <algorithm>
#include <map>
using namespace std;
int num[48037];
int main(){
int bnd = sqrt(INT_MAX + 0.0);
int size = 0;
for(int i = 2; i <= bnd; ++i){
long long n = i * i;
for(; n <= INT_MAX; n *= i){
num[size++] = n;
}
}
sort(num, num + size);
size = unique(num, num + size) - num;
for(int i = 0; i < size; ++i){
printf("%d\n",num[i]);
}
return 0;
}