![]() |
|
How to make faster this code - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: Homework (https://python-forum.io/forum-9.html) +--- Thread: How to make faster this code (/thread-5813.html) |
How to make faster this code - Ace - Oct-23-2017 Hello everyone , I have occurred in a problem with this code.The thing is that I had to find all prime numbers in a list and delete from list1 all the numbers with divisors !=t ; until that point it's all "ok", but I must find a way to make faster the finding process(for divisors) for numbers like >10000000000 def findpandd(list1,t):
primes=[]
d={}
for el in list1:
cont=0
r=range(2,el)
for i in r:
if el%i==0:
cont+=1
if i>(el**(1/2)) and cont==0:break
if cont>t:break
d.update({el: cont})
for el in d:
if d[el]==0:primes+=[el]
if d[el]!=t:list1.remove(el)
return list1,primes
RE: How to make faster this code - Larz60+ - Oct-23-2017 You have a loop within a loop. That means that each time the outer loops goes through 1 iteration, the inner loop if executed from start to end. so in your case, the loop: for i in r:will run from start to finish from 2 to el for each iteration of list1. Calculating primes is one place where I would recommend recursion. see: https://www.daniweb.com/programming/software-development/threads/331289/python-recursive-prime-number-function |