【问题标题】:Unable to write a squarefree algorithm无法编写 squarefree 算法
【发布时间】:2017-01-29 10:44:24
【问题描述】:

我正在尝试编写一个返回 true 的函数,如果整数是 Square-Free - 这是我尝试过的:

def squarefree(n):
    for i in range (2,n-1):
        if n%(i**2)==0:
            return False
        else:
            return True

在数学中,无平方整数或 quadratfrei(来自德语)整数是不能被除 1 以外的任何完美平方整除的整数。例如,10 是无平方的,但 18 不是,因为 18 是能被 9 = 32 整除。最小的正平方数是

【问题讨论】:

  • Sooo 有什么问题吗?而且您的格式已关闭。
  • 你有什么问题?
  • 什么是免费的?
  • 这段代码是写的吗
  • 现在的代码检查n是否能被4整除。所以,问题是这个数字是否能被一个平方数整除?

标签: python


【解决方案1】:

这里的主要问题是,只要你的 if 语句失败,你就会返回。将返回移出 for 循环。也可以快速节省时间,您只需要上到 n 的 4 次根。

import math

def squarefree(n):
    for i in range (2,math.ceil(math.sqrt(math.sqrt(n)))):
        if n%(i**2)==0:
            return False
    return True

您可以通过仅检查直到 n 的 4 次根的素数来进行更多优化。

【讨论】:

    猜你喜欢
    • 2011-06-23
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多