Below given is solution to a puzzle(
http://projecteuler.net/index.php?section=problems&id=14) in python and c

Python:

import time
startT=time.time()
maxlen=0
longest=0
for i in xrange(1,1000000):
 last=i
 cnt=0
 while(last <> 1):
  cnt=cnt+1
  if(last%2==0):
   last=last/2
  else:
   last=3*last+1
 if(cnt>maxlen):
  maxlen=cnt
  longest=i
print "time taken (sec) : ",time.time()-startT
print maxlen,longest

Python Output:
time taken (sec) :  99.4702298641
524 837799

C:

#include <stdio.h>
int main(int argc, char **argv)
{
int longest = 0;
int maxlen = 0;
int i;
unsigned long last;
for (i = 1; i <= 1000000; i++)
{
 last = i;
 int cnt = 0;
 while (last != 1)
 {
  cnt++;
   if (last % 2 == 0)
    last = last / 2;
  else
    last = 3 * last + 1;
 }
 if (cnt > maxlen)
 {
 maxlen = cnt;
 longest = i;
 }
}
printf("longest: %d (%d)\n", longest, maxlen);
return 0;
}


My doubt is that in C the result comes in 1-2 sec but in python it takes 99
secs.I don't expect python to be as fast as c but i cant understand why it
should be so slow in python.i'm new to python so if there is better way to
do the above prog in python please suggest.
_______________________________________________
BangPypers mailing list
BangPypers@python.org
http://mail.python.org/mailman/listinfo/bangpypers

Reply via email to