编程数论方案

时间:2014-06-02 07:54:15

标签: python c math numbers wolfram-mathematica

我有这个想要编程的东西,如下所示。

我们都知道接下来的两个身份:

  

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 等...

我希望你理解我的问题。

提前致谢。

4 个答案:

答案 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]]

我非常确定在其他编程语言中它可能运行得更快。