当前位置: 首页 > 面试题库 >

立方根是整数吗?

谭兴学
2023-03-14
问题内容

这似乎很简单,但我找不到解决方法。我需要显示整数的立方根是否为整数。我is_integer()在Python
3.4中使用了float方法,但没有成功。如

x = (3**3)**(1/3.0) 
is_integer(x)    
True

x = (4**3)**(1/3.0) 
is_integer(x)    
False

我想x%1 == 0x == int(x)isinstance(x,int)没有成功。

我将不胜感激。


问题答案:

对于较小的数字(<〜10 13左右),可以使用以下方法:

def is_perfect_cube(n):
    c = int(n**(1/3.))
    return (c**3 == n) or ((c+1)**3 == n)

这将截断浮点立方根,然后测试两个最接近的整数。

对于更大的数字,一种方法是仅使用整数来保留精度来对真正的立方根进行二进制搜索:

def find_cube_root(n):
    lo = 0
    hi = n
    while lo < hi:
        mid = (lo+hi)//2
        if mid**3 < n:
            lo = mid+1
        else:
            hi = mid
    return lo

def is_perfect_cube(n):
    return find_cube_root(n)**3 == n


 类似资料:
  • 问题内容: 我正在寻找确定一个值是否为完美平方(即其平方根是另一个整数)的最快方法: 我已经通过使用内置Math.sqrt() 函数完成了简单的方法,但是我想知道是否有一种方法可以通过将自己限制为仅整数域来更快地完成操作。 维护查询表是不切实际的(因为大约2 31.5整数的平方小于2 63)。 这是我现在要做的非常简单明了的方法: 问题答案: 我想出一种方法,至少在我的CPU(x86)和编程语言(

  • 问题内容: 在python或标准库中的某个地方是否存在整数平方根?我希望它是准确的(即返回一个整数),如果没有解决办法,可以吠叫。 此刻,我滚动了自己的幼稚: 但这很丑陋,我不太相信大整数。我可以遍历正方形,如果超出了该值,则放弃,但是我认为做这样的事情有点慢。另外我想我可能正在重新发明轮子,像这样的东西肯定已经存在于python中了… 问题答案: 牛顿的方法在整数上工作得很好: 这将返回的最大整

  • python或标准库中是否有整数平方根?我希望它是精确的(即返回一个整数),如果没有解决方案,就吠叫。 此刻我卷起了我自己天真的一个: 但是它很难看,而且我不相信它是大整数。我可以遍历这些方块,如果超过了这个值就放弃,但我认为这样做会有点慢。而且我想我可能会重新发明轮子,像这样的东西肯定已经存在于python中了。。。

  • 我想计算Python3中一个非常大的数字的立方根。 我尝试了下面的函数,以及Python语法,但它们都产生了一个错误: 溢出错误:(34,数值结果超出范围) 我真的需要计算立方根来解决密码学中的一个问题。 二进制搜索: 编号:

  • 我想找出一个整数部分的一个平方根的数字在python与pylab扩展然而,long(sqrt(n))不适用于大整数。有没有什么方法可以非常快地找到一个非常大的数的平方根的整数部分?我是新的Python和编程。我所知道的是当循环和如果语句。谢谢你们

  • 我曾尝试在Python中查找立方根,但不知道如何找到它。有一行代码有效,但他不给我完整的数字。例子: 这不是给我4强硬,而是3.99999。有人知道我该怎么解决这个问题吗?