这个题 任意一个数,他的幂只要不是质数则可以分解成两个数的乘 判断有没有溺出 i×i 则用最大的那个数 Max/i < i 吗
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<stdio.h>
#include<set>
using namespace std;
typedef unsigned long long ll;
const ll Max = 0xffffffffffffffffLL;//18446744073709551615;
set<ll>s;
bool work( int num ){
for( int i = ; i <= sqrt(num); i++ )
if( !(num%i) ) return false;
return true;
}
int main( )
{
//freopen("out1.txt","w",stdout);
s.clear(); s.insert(); set<ll>::iterator it;
for( ll i = ; i <= (<<); i++ )
{
ll ans = i*i; int num = ;
while( ){
if( Max/ans < i )break;
ans = ans*(i); num++;
if( !work(num) )s.insert(ans);
}
}
for( it = s.begin(); it != s.end(); it++ )
printf("%llu\n",*it);
return ;
}