一開始被嚇到了,估算不出來數據有多少個就該自己試試的;總共不超過五萬個數,計算機很快就計算出來了……
#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;
}
//沒想到啊,就這樣寫不會超時,一共就四萬多個數,一個一個算出來