This algorithm won't work as primes might have different power. for
eg. N=12
12 is divisible by 2 so it ends up being 3. then 3 divides by 3. So it
prints possible. But the actual answer is no.
Correct code:
for (int i=2;i<=sqrt(n);i++)
{
float ans = log(n)/log(2);
int an = ans;
if (ans-an==0 && an!=1)
{
cout<<"possible "<<i<<"^"<<an<<" = "<<n;
break;
}
}
if (i>sqrt(n))
{
cout<<"not possible";
}
On Dec 26, 9:03 pm, SAMMM <[email protected]> wrote:
> From Wht I can understand from problm to check whether N can be
> expressed a m^n : Eg: 1331=11^3
>
> What comes to my mind is to get all prime factors from 2 to SQRT(N)
> [Prime Sieve] , Here N is the Given Integer .
>
> Now Iterate over the prime number(p) from 2 to Sqrt(N)
> do
> T=N;
> if(!(T%p)) while(!(T%p)) T/=p;
> if(T==1) {printf("Yes possible");break;}
> done
> if (p>Sqrt(N)) printf("Not Possible");
--
You received this message because you are subscribed to the Google Groups
"Algorithm Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/algogeeks?hl=en.