【问题标题】:How to take square root of large numbers in Python 2?如何在 Python 2 中取大数的平方根?
【发布时间】:2018-06-03 04:36:31
【问题描述】:

我正在尝试检查一个大数是否是一个完美的正方形。这是我的代码的相应部分:

x = long(raw_input())
a = sqrt(5 * x ** 2 + 4)
b = sqrt(5 * x **2 - 4)
if long(a) == a or long(b) == b:
    print "YES"
else:
    print "NO" 

但是,当 x 变得太大时,我会收到此错误:

    a = sqrt(5 * x ** 2 + 4)
OverflowError: long int too large to convert to float

谁能告诉我解决方法?

【问题讨论】:

  • 你可以试试Newton's method
  • 有更好的方法来确定一个数字是否是一个完美的正方形(例如,参见this)。
  • @erip 你的意思是 python 不能做到这一点?
  • 您使用了错误的算法。尝试找到不依赖于大数字的东西。
  • @xrisk 如果您查看了链接,它是用 Python 实现的。无论如何,我认为 arshajii 的解决方案更聪明。

标签: python python-2.7


【解决方案1】:

使用decimal module 取大数的平方根。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 2018-05-30
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    相关资源
    最近更新 更多