我要得到的数字不是完全平方,是输入数的因子,这里我面临的问题是,假设我们输入72,所以36是完全平方,12不是完全平方,但在12的因子中,12是一个完全平方,所以现在不能计算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是:2 3的因子是:3 6的因子是: 2,3,6的因子是: 2,8,12的因子是: 2,3,6,12 . 18的因子是: 2,3,6,18 . 24的因子是: 2,3,6,8,12,24 . 72的因子是: 2,3,6,12,18,24,72
发布于 2018-08-09 19:17:21
您可以以不同的方式处理相同的问题:
factors(x)perfc_sqr(x)发布于 2018-08-09 19:53:04
我使用sqrt(apositiveint).is_integer()修改了我的代码,这使得我的生活更容易找到它是否完美的平方,然后我修改了完整的函数,这样如果这个数字是它的第一个奇数,然后测试它的平方根,那么唯一的问题是2不在列表中,但是计数是正确的。
def is_square(apositiveint):
if apositiveint % 2 == 0:
apositiveint = apositiveint / 2
if apositiveint % 2 == 0:
return True
return sqrt(apositiveint).is_integer()我增加了这个函数,并将其放入程序中。
from math import sqrt
def is_square(apositiveint):
if apositiveint % 2 == 0:
apositiveint = apositiveint / 2
if apositiveint % 2 == 0:
return True
return sqrt(apositiveint).is_integer()
def print_factors(x):
_list = []
count = 0
print("The factors of", x, "are:")
for i in range(1, x + 1):
if x % i == 0:
if is_square(i) == False:
_list.append(i)
count += 1
print(count + 1)
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)https://stackoverflow.com/questions/51773312
复制相似问题