Hello Sid

Your code is working for N=4,8 but failing when N=9

9 is expressed as 3^2 but your code is giving output as :Not possible.


On Dec 26, 9:36 pm, sid1 <siddhantkhann...@gmail.com> wrote:
> 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 <somnath.nit...@gmail.com> 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");- Hide quoted text -
>
> - Show quoted text -

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to