Я пишу программу, которая примет до пяти чисел и выяснит, простые они или нет. Если число не простое, оно найдет их главные факторы. Затем он рассчитает LCM начальных чисел. Код, который я написал до сих пор:
def prime(n):
if n > 1:
for i in range (2,n):
if n % i == 0:
return False
return True
def length(n):
if len(n) > 5:
return True
return False
toggle = False
enter_numbers = True
zero_one_neg = True
square = False
prime_list = [ [] for i in range(100) ]
lcm_list = [ [] for i in range(100)]
while enter_numbers:
nums = list(map(int, input('\nEnter up to five natural numbers greater than 1 separated by commas. Enter at least two if you want to calculate their LCM: ').split(',')))
for i in range (len(nums)):
if nums[i] <= 1:
zero_one_neg = True
print('\nNo zeroes, ones or negatives. Start over. ')
if length(nums) and zero_one_neg:
print('\nNo more than five numberes. Start over. ')
break
break
else:
zero_one_neg = False
if length(nums) and not zero_one_neg:
print('\nNo more than five numbers. Start over. ')
elif not length(nums) and not zero_one_neg:
enter_numbers = False
for i in range (len(nums)):
for j in range (2,nums[i]):
if nums[i] % j == 0:
lcm_list[i].append(j)
if prime(j):
prime_list[i].append(j)
toggle = True
if not toggle:
print('\n', nums[i] ,'is a prime number.')
if toggle:
print('\n', nums[i] ,'is not a prime number. It\'s prime factors are: ',prime_list[i])
print(lcm_list[i])
toggle = False
print(len(prime_list))
Конечно, он не полный. Он работает нормально, но мне не нравится тот факт, что я должен предварительно установить размеры prime_list
и lcm_list
. Как я могу динамически установить их размеры?