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