在网上看到一个数学题,整数 33 能否用三个整数的立方和表示。正好刚开始学 Python,就写了个小程序:
import sys
max=sys.maxint
min=-sys.maxint-1
for x in xrange(min,max):
for y in xrange(min,max):
for z in xrange(min,max):
if x**3+y**3+z**3==33:
print "x=",x
print "y=",y
print "z=",z
简单粗暴,就是不停地尝试。
但在运行时,提示:OverflowError: xrange() result has too many items
按照书上的说法,xrange 每次循环只会产生一个对象,应该不会这样。range 每次都是先生成所有的数据,所以容易出现这个问题,而且性能也不好。
以上是 python2 程序。
(因为书上提到 python3 中的 range 和 python2 中的 xrange 相同,所以把程序换成了 python3,现在正在运行)
1
robinlovemaggie 2019-09-26 10:42:32 +08:00
求立方和有必要遍历负值域吗?
|
2
Raven316 2019-09-26 10:49:41 +08:00 1
@robinlovemaggie #1 有吧,不过这也太暴力了。。
|
3
gjquoiai 2019-09-26 11:05:46 +08:00
|
4
Vegetable 2019-09-26 11:26:06 +08:00
还 33 呢?人家 42 都算完了...
不要这么尝试了,这能算出来,超算面子往哪搁 |
5
jzq526 OP @Raven316 @robinlovemaggie 这个题目很古老,是个猜想。反正也没有什么更好的办法,只能枚举。而且已经有人枚举出来了,答案是:( 8866128975287528 )^3+(–8778405442862239 )^3+(–273611468807040 )^3=33。据说他们正在找能得出 42 的组合。
都是玩的,好像也没有什么真正的价值 |