Проблема:
У меня есть следующая задача:
[...] написать программу, которая получает положительное целое число больше 1 и проверяет, является ли оно простым или составным.
Решение:
Я придумал следующее:
n=int(input())
flag=True
for i in range(2,n//2+2):
if n%i==0:
print("Not prime.")
flag=False
break
if flag==True:
print("Prime.")
Что казалось правильным. Затем я решил поиграть с ним и посмотреть, как все будет работать с большим целочисленным вводом, и 10 ^ 9 + 7 выглядело как хороший выбор. Однако программа, похоже, вообще не заканчивала работу и продолжала работать более 30 секунд, пока я не решил ее убить.
Но, учитывая, что цикл в алгоритме выполняется не более ~ 5 * 10 ^ 8 раз, и учитывая огромное количество вычислений, которые современный компьютер может выполнить за секунду, не слишком ли долго это время выполнения?
Что здесь происходит?
Работает ли 10 ^ 9 + 7 как «верхняя граница» для вычислений типа int
в Python, так же как и в C, таким образом «переполняя вычисления» каким-то образом? Или что-то не так с моим алгоритмом?
Заранее спасибо!