You sent me this message privately, instead of on the list (use Reply-All in most mail programs). Two problems with that: 1) nobody else gets to help 2) I don't give private help, except as a contractor.

On 01/22/2012 12:44 PM, Shreesh bhat wrote:
*Lucky numbers:*
def sieve(maxi):
   primes = range(2,maxi+1)
   for i in primes:
     j = 2
     while i * j<= primes[-1]:
       if i * j in primes:
         primes.remove(i*j)
       j += 1
   return primes

maxi=(9**2)*19
tab=sieve(maxi)
table={}
for i in tab:
     table[i]=0

def isprime(n):
     return table.has_key(n)

count=0

def islucky(n):
   global count
   sum1=0
   sum2=0
   for letter in str(n):
     tmp=ord(letter)-48
     sum1+=tmp
     sum2+=tmp**2
   if isprime(sum1):
     if isprime(sum2):
       count+=1

number=raw_input()
def execute():
   global count
   for i in range(int(number)):
       inp=raw_input()
       a=inp.split()
       startnum=int(a[0])
       endnum=int(a[1])
       count=0
       while startnum != endnum:
           islucky(startnum)
           startnum+=1
       print count

execute()

Hi Sir,
The program still doesn't work with "consult-table" approach.

Define "doesn't work". If you give a specific trace-back message, somebody is bound to recognize the problem. Or if it doesn't give an exception, describe in what way the answer is wrong. Or if it's completely correct, but simply too slow, then say so.

I have also optimised digit's sum method.
Can you please tell me another method to work around it to get more
execution speed?


What part is slow? Calculating the table, or looping through your while loop?


--

DaveA
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to