Python:布朗数字和溢出

时间:2016-11-09 21:29:38

标签: python python-3.x

我试图制作一个计算布朗数字的程序,或者可以表示为n!+1 = m^2的数字,其中m是一个整数,并且运行此数字会产生太大的数字。

知道怎么解决这个问题吗? (还有一种abacist风格的方法,但它需要指数更长)

n = 40320
f = 9
while True:
    x = (n+1)**(.5)
    if isinstance( x, int ):
        break
    else:
        n = n*f
        f = f+1
print(f)
print(n)
print(input(" "))

* n是8!

1 个答案:

答案 0 :(得分:0)

您的循环永远不会结束,因为x永远不会是int类型的

>>> 4**0.5
2.0
>>> isinstance(4**0.5, int)
False
>>> isinstance(4**0.5, float)
True

我可以建议这个替代方案:

x = (n+1)**(.5)
x = int(round(x))
if x ** 2 == n + 1:
    break

这也应该处理浮点精度问题。

编辑:以上是一个简单的小数字方法。要检查大数是否是完美的正方形,还有其他方法,例如:https://stackoverflow.com/a/2489519/2482744