@irina222222

Как ускорить код?

Здравствуйте! Скажите, пожалуйста, как можно ускорить код? У меня не проходит по времени, пишет, что процесс занимает много времени. Ограничение 3 секунды
Найти просты числа в заданном диапазоне. Необходимо использовать решето Эратосфена

Условие:
2 ≤ a, b ≤ 10^7

0 ≤ b - a ≤ 10^6

def checkPrime(start, end): 
	numbersList = list(range(start, end+1)) 
	for i in range(2,int(end**0.5)+1): 
		for j in range (i*i, end+1, i): 
			if j in numbersList: 
				numbersList.remove(j) 
	return numbersList 
start = int(input("Enter the Starting range "))
end = int(input("Enter the Ending range "))
primeNumberList = checkPrime(start, end) 
print(*primeNumberList)
  • Вопрос задан
  • 196 просмотров
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Можно заменить список на множество для начала:
def checkPrime(start, end):  
    numbers = set(range(start, end + 1))  
    for i in range(2, int(end ** 0.5) + 1):  
        for j in range(i * i, end + 1, i):  
            numbers.discard(j)  
    return sorted(numbers)

Если упорядоченность не нужна, то можно и сортировку убрать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы