求出所有满足n=a^b的数n
a,b都大于等于2,所以最多不超过5W个数,直接打表,。。。
#include"stdio.h"
#include"algorithm"
using namespace std;
#define M 2147483648
#define N 50000
int main()
{
int n;
int a[N];
int i,t;
n=1;
a[0]=0;
for(i=2;i<=N;i++)
{
t=i;
while(t<=M/i)
{
t*=i;
a[n++]=t;
}
}
sort(a+1,a+n);
for(i=2;i<n;i++)
{
if(a[i]!=a[i-1])
printf("%d\n",a[i]);
}
return 0;
}