我有这个想要编程的东西,如下所示。
我们都知道接下来的两个身份:
3 2 4 2 = 5 2
3 3 4 3 5 3 = 6 3
现在,我想写一个计算机代码(用mathematica,C或Python)来检查这种关系。
例如,3 4 +4 4 +5 4 +6 4 与7 < sup> 4 并检查它是否等于它,我的意思是我想检查上面这样一个数字序列的更多情况,并比较它们是否确实如上所述。
基本上我知道我需要一个循环和条件,我的问题是我如何保持数字3,4,5,6,...继续在序列中生成?
这是我如何编写此代码的错误。
我的意思是我想检查i = 10,000,即: 3 i +4 i +5 i + ...它是否等于(3 + i) i 等...
我希望你理解我的问题。
提前致谢。
答案 0 :(得分:1)
for pow in xrange(2,5):
sum=0
for index in xrange(3,3+pow):
sum+=index ** pow
if sum==(index+1) ** pow:
print True
#output is for power 2, 3 it works
我把它用于2,5
的范围即第一个循环在
上计算3**2 + 4 **2 ==5 **2
..soo
将所有10000次幂的功率范围增加到10001
答案 1 :(得分:1)
意思是我想检查一下i = 10,000,即:3i + 4i + 5i + ...它是否等于(3 + i)我等...
考虑range
的工作方式,仅在True
时打印:
limit = 10000
for pow in range(2, limit + 1):
if ((3 + pow) ** pow == sum([exp ** pow for exp in range(3, 3 + pow)])):
print pow
答案 2 :(得分:1)
这会尽量避免重新进行计算。
>>> def f(n):
... c = 1
... L1 = [3]
... L2 = [1]
... while (c + 3 < n):
... L2 = [L1[i] * L2[i] for i in range(c)]
... c += 1
... x = (c + 2) ** (c - 1)
... print(c, x == sum(L2))
... L1.append(c + 2)
... L2.append(x)
...
>>> f(10)
(2, False)
(3, True)
(4, True)
(5, False)
(6, False)
(7, False)
>>>
答案 3 :(得分:0)
嗯,在Mathematica中,这很容易:
For[i = 3, i < 101, i++ ]
If[Sum[(3 + j)^i, {j, 0, i - 1}] == (3 + i)^i, Print[i]]
我非常确定在其他编程语言中它可能运行得更快。