首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python完全平方自由数及其因子

python完全平方自由数及其因子
EN

Stack Overflow用户
提问于 2018-08-09 18:02:05
回答 2查看 1.5K关注 0票数 1

我要得到的数字不是完全平方,是输入数的因子,这里我面临的问题是,假设我们输入72,所以36是完全平方,12不是完全平方,但在12的因子中,12是一个完全平方,所以现在不能计算12,所以我想得到没有完全平方的数,也就是没有完全平方因子的数,所以在72中,只有2,3,6是完全平方自由数。

我正在尝试的方法是找到因子,如果因子不是完全平方,那么它就添加到另一个列表中,然后我想再次得到它们的因子,如果其中没有完美平方,将它们添加到另一个列表中并打印出来,但是我无法找到下一步的逻辑,即得到它们的因子,并消除那些有因子的人为完全平方。

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-09 19:17:21

您可以以不同的方式处理相同的问题:

  1. 编写一个计算t=the数的因子的函数.factors(x)
  2. 编写另一个函数,以确定一个数字或它的因子是否为完全平方:perfc_sqr(x)
  3. 最后,编写一个返回完全平方自由因子的函数: numpy作为np因子(X):num= np.arange(2,x+1)返回numsx %num == 0 def perfc_sqr(x):pnum =np.sqrt(factor(X))1:返回任意(pnum== np.array(pnum,dtype="i")) def perfect_square_free(x):返回i的因子(X),如果不是perfc_sqr(i) perfect_square_free(72) 2,3,6
票数 1
EN

Stack Overflow用户

发布于 2018-08-09 19:53:04

我使用sqrt(apositiveint).is_integer()修改了我的代码,这使得我的生活更容易找到它是否完美的平方,然后我修改了完整的函数,这样如果这个数字是它的第一个奇数,然后测试它的平方根,那么唯一的问题是2不在列表中,但是计数是正确的。

代码语言:javascript
复制
def is_square(apositiveint):
    if apositiveint % 2 == 0:
        apositiveint = apositiveint / 2
    if apositiveint % 2 == 0:
        return True
    return sqrt(apositiveint).is_integer()

我增加了这个函数,并将其放入程序中。

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51773312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档