一开始被吓到了,估算不出来数据有多少个就该自己试试的;总共不超过五万个数,计算机很快就计算出来了……
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
#define MAX 2147483648
int main()
{
int i,j,k,a[50000];
for(i=2,k=0;i<sqrt(MAX);i++)
{
for(j=2;pow(i*1.0,j*1.0)<MAX;j++)
{
a[k]=pow(i*1.0,j*1.0);
k++;
}
}
sort(a,a+k);
printf("%d\n",a[0]);
for(i=1;i<k;i++)
{
if(a[i]!=a[i-1])
printf("%d\n",a[i]);
}
return 0;
}
//没想到啊,就这样写不会超时,一共就四万多个数,一个一个算出来