Найти - Пользователи
Полная версия: Помогите с задачей по простым числам
Начало » Центр помощи » Помогите с задачей по простым числам
1
137th
Написать функцию, которая определяет является ли число простым. В основной программе вывести все простые числа в интервале от 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”)
marvellik
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 = ',')

PEHDOM
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
py.user.next
https://python.su/forum/post/140464/
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB