
在网上看到一个数学题,整数 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 @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 的组合。 都是玩的,好像也没有什么真正的价值 |