, чтобы получить практический опыт, я пытаюсь решить проблемы в spoj. Проблема в ссылке требует найти все простые числа между заданными 2 числами. Итак, как я реализую это с помощью python 2.7Как я могу сделать свою основную генераторную функцию быстрее
# printing all prime numbers between given two inputs
import math
def findPrimes(num1,num2):
for num in range(num1,num2+1):
isPrime=True
for i in range(2,int(math.sqrt(num))+1):
if num%i==0:
isPrime=False
break
if isPrime:
print num
def main():
inputs=[]
numOfTestCases=int(raw_input())
while(numOfTestCases>0):
line=raw_input()
numbers=line.split()
inputs.append(numbers)
numOfTestCases-=1
for testCase in inputs:
findPrimes(int(testCase[0]),int(testCase[1]))
print ""
main()
Однако, когда я отправляю код, я получаю предел превышения времени. Как я могу сделать свой код достаточно быстрым?
Я бы рекомендовал посмотреть на сито Эратосфена. Предполагая, что вы не производят огромные простые числа, этого должно быть достаточно для ваших целей. –
@NathanMerrill на самом деле, в тестовых случаях действительно огромные числа – zwlayer
Это скорее математический алгоритм, чем код, - алгоритмически с ним существует ряд известных решений с различными сложностями. – Andrew