Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 28, 2019 09:54:29

137th
Зарегистрирован: 2019-10-03
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с задачей по простым числам

Написать функцию, которая определяет является ли число простым. В основной программе вывести все простые числа в интервале от 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”)

Офлайн

#2 Окт. 28, 2019 11:17:21

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Помогите с задачей по простым числам

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)

Офлайн

#3 Окт. 28, 2019 12:40:22

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Помогите с задачей по простым числам

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]
Бериегите свое и чужое время.

Офлайн

#4 Окт. 28, 2019 14:20:12

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9897
Репутация: +  855  -
Профиль   Отправить e-mail  

Помогите с задачей по простым числам

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version