Я хочу получить числа, которые не являются идеальным квадратом и являются факторами входного числа. Проблема, с которой я сталкиваюсь здесь, заключается в том, что мы вводим 72, поэтому 36 - это идеальный квадрат, а 12 - нет, но в множителях 12 4 - это идеальный квадрат, поэтому 12 нельзя сосчитать сейчас. Я хочу получить числа, которые свободны от идеального квадрата, а также свободны от идеальных квадратов, поэтому в 72 только 2,3 и 6 являются числом без идеального квадрата.
Я пытаюсь найти подход, чтобы найти факторы, тогда, если факторы не являются идеальным квадратом, то он добавляется в другой список, тогда я хочу снова получить их факторы, и если в нем нет идеального квадрата, добавьте их в другой список и распечатайте его, я получил несовершенные квадратные множители, но я не могу найти логику следующего шага, т.е. получить их множители и исключить те, у кого есть множители в виде идеального квадрата
def is_square(apositiveint):
x = apositiveint // 2
seen = set([x])
while x * x != apositiveint:
x = (x + (apositiveint // x)) // 2
if x in seen:
return False
seen.add(x)
return True
def print_factors(x):
_list = []
_list_1 = []
_list_2 = []
print("The factors of", x, "are:")
for i in range(2, x + 1):
if x % i == 0:
if is_square(i) == False:
_list.append(i)
else:
_list_1.append(i)
return _list
num = int(input("Enter the number"))
_list_1 = []
_list_1 = print_factors(num)
number = []
for x in range(0, len(_list_1)):
number = print_factors(_list_1[x])
print(number)
вход
72
выход
Множители 72: Множители 2: [2] Множители 3: [3] Множители 6: [2, 3, 6] Множители 8: [2, 8] Множители числа 12: [2, 3, 6, 12] Множители числа 18: [2, 3, 6, 18] Множители числа 24: [2, 3, 6, 8, 12, 24] Множители числа 72: [2, 3, 6, 8, 12, 18, 24, 72]