Форум сайта python.su
Написать функцию, которая определяет является ли число простым. В основной программе вывести все простые числа в интервале от n до m.
У меня уже есть первая часть кода, но я не понимаю как доделать до конца, чтобы проверка числа было гораздо проще. Обязательно выполнять с именной функцией.
def P(n):
if n<2:
return False
if n%2==0:
return n==2
if n%3==0:
return n==3
if n%4==0:
return n==4
if n%5==0:
return n==5
if n%6==0:
return n==6
if n%7==0:
return n==7
if n%8==0:
return n==8
if n%9==0:
return n==9
i=5
s=2
while i*i<=n:
if n%i==0:
return False
i+=s
s=6-s
return True
a=int (input())
b=int (input())
for i in range (a,b+1):
if P(i):
print(i)
input(“Press ENTER to exit”)
Офлайн
137thначнем с того что число простое если имеет всего два делителя это 1 и само число. зачем писать кучу ифоф если это можно проверить в цикле. представь ты будешь проверять 6 значные числа, зачем проверять все делители если найден хоть один.
def simple(number): for i in range(2, number): if not number % i: return False return True for number in range(2, 500):# 500 для примера задано там ваше число будет if simple(number): print(number,end = ',')
Отредактировано marvellik (Окт. 28, 2019 11:17:34)
Офлайн
marvellik
тут можно еще оптимизировать, если вспомнить теорию чисел то
for i in range(2, number):
можно заменить на
for i in range(2, int(math.sqrt(number))+1):
кроме того любое число блльше 9 заканчивающиеся на 2,4,5,6,8,0 гарантировано делятся на 2 5 или 10 их не имеет смысла проверять , тоесть нужно проверять только те числа заканчивающиеся на 1, 3, 7 или 9
[code python][/code]
Офлайн
Офлайн