Я написал это, чтобы определить наибольший простой фактор из любого данного числа.Он хорошо работает для чисел, состоящих менее чем из 9 цифр, но ведет себя неопределенным образом, когда количество цифр превышает девять.Как я могу его оптимизировать?
Эта функция определяет, является ли число простым числом
def is_prime(x):
u = 1
i = 2
while i < x:
if x%i == 0:
u = 0
break
else:
i = i+1
return u
Эта функция определяет, является ли число простым множителем другого
def detprime(x,y):
if x%y == 0:
if (is_prime(y)):
return 1
else:
return 0
else:
return 0
В этом разделе проверяются все простые множители данного числа, сохраняется их в списке и возвращается наибольшее значение
def functionFinal(x):
import math
factors = []
y = x//2
for i in range(1,y):
if detprime(x,i) == 1:
factors.append(i)
y = len(factors)
print(factors[y-1])
import time
start_time = time.process_time()
print("Enter a number")
num = int(input())
functionFinal(num)
print (time.process_time () - start_time)