无法编写 squarefree 算法
Posted
技术标签:
【中文标题】无法编写 squarefree 算法【英文标题】:Unable to write a squarefree algorithm 【发布时间】: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整除。所以,问题是这个数字是否能被一个平方数整除?
【参考方案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 次根的素数来进行更多优化。
【讨论】:
以上是关于无法编写 squarefree 算法的主要内容,如果未能解决你的问题,请参考以下文章