Имейте в виду, что я начал изучать Python (первый язык) всего несколько дней назад.
Я пытаюсь найти наибольший простой множитель заданного (и потенциально большого) целого числа «а». Я начну с определения функции prime(n), которая проверяет, является ли целое число n простым или нет. Затем я нахожу множители 'n' числа 'a' от наибольшего к наименьшему и проверяю каждый с помощью простого числа (n). Если найдено простое n, оно распечатывается, и я использую break для завершения процесса. Если n=1 — единственный найденный простой делитель, то «a» — простое число, и поэтому его наибольший простой делитель — это он сам.
Этот скрипт полностью не работает. Переменная n_prime возвращается к тому значению, которое я впервые присвоил ей, даже после того, как Prime(n) должен изменить ее на True или False. Если я начну с None, после Prime(n) он всегда останется None.
Я надеюсь, что это не слишком беспорядочно, и что с моим кодом не слишком много проблем.
def prime(n):
if n == 1:
n_prime = False
if n == 2:
n_prime = True
if n == 3:
n_prime = True
if n % 2 == 0 and n_prime != True:
n_prime = False
else:
for i in range(3, n, 2):
if i != n:
if n % i == 0:
n_prime = False
break
else:
n_prime = True
n_prime = None
a = int(input())
for n in range (a-1, 1, -1):
if a % n == 0:
prime(n)
if n_prime==True:
if n != 1:
print(n, ' is the greatest prime factor of ', a)
break
else:
print(a, 'is the greatest prime factor of ', a)
break
def prime(n):
, должен иметь отступ. - person ifconfig   schedule 22.07.2017return
вместо глобальной переменной, чтобы получить результатprime
. - person Paul   schedule 22.07.2017