How can we check whether a number(n) is in the form a power b (a^b, b>=2)?
There are about [log(n,a)] possible values of b. Now if a=2 then bmax=[log(n,2)] which is very small. So you can simply use brute force through the values of b from 2 to bmax to check if there exists a such that a^b=n.
Here’s my solution - ideone
good query…i have been looking for this answer since long time
4 Likes
Check if ( log(b) / log(a) ) = (int) ( log(b) / log(a) )
If yes then it is of from a^b.
Code
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
if( ( log(a) / log(b) ) == (int) ( log(a)/log(b) ) ) printf("yes");
else printf("no");
return 0;
}