首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python: Brown numbers和overflow

Python: Brown numbers和overflow
EN

Stack Overflow用户
提问于 2016-11-10 05:29:38
回答 1查看 78关注 0票数 0

我正在尝试编写一个程序来计算布朗数,或者可以表示为n!+1 = m^2的数字,其中m是一个整数,运行这个程序会产生一个太大的数字。

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

代码语言:javascript
复制
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!

EN

回答 1

Stack Overflow用户

发布于 2016-11-10 05:32:14

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

代码语言:javascript
复制
>>> 4**0.5
2.0
>>> isinstance(4**0.5, int)
False
>>> isinstance(4**0.5, float)
True

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

代码语言:javascript
复制
x = (n+1)**(.5)
x = int(round(x))
if x ** 2 == n + 1:
    break

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40516329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档