在一系列数字中查找下一个数字的算法?

时间:2011-01-18 09:23:52

标签: algorithm math

我有以下数字序列:

2 5 6 20 18 80 54 320 162 1280

我只是无法找到下一个数字或算法来计算它。

任何提示?

8 个答案:

答案 0 :(得分:11)

下一个号码是486

序列为* 3,* 4。

每个奇数索引乘以4:

5 20 80 320 1280

每个偶数索引乘以3:

2 6 18 54 162

因此,486是下一个数字。 : - )

答案 1 :(得分:7)

接下来是486

只需wolframalpha

Mathematica输出:{2, 5, 6, 20, 18, 80, 54, 320, 162, 1280, 486, 5120, 1458, 20480, 4374}

这是它给出的递归关系:

a(n+4) = 7*a(n+2)-12*a(n)

答案 2 :(得分:4)

此问题尚未确定。你可以写一个程序来提出一些合乎逻辑的下一个数字,但不能保证它与这个谜题的意图有什么关系。例如,计算机可以将十阶多项式拟合到数据,然后使用它来推断下一个值。它可能会尝试找到一些文本语料库,这些文本语料库会在文本名称中出现这些数字,然后返回该语料库的第一个字母。换句话说,是的,计算机可以提供一些适合的数字,但因为拼图制造商正在寻找一些特定的答案,所以没有理由认为计算机是正确的。

也就是说,这个难题的答案包括查看奇数索引术语的比率和偶数索引术语的比率。你会发现一个模式。 : - )

答案 3 :(得分:3)

以下是计算该序列的Java应用程序:

/**
 * @author mpieciukiewicz
 */
public class Main {

    public static void main(String[] args) {
        new Main().run();
    }

    public void run() {
        for (int p=0; p<11; p++) {
            System.out.println(p+":"+number(p));
        }
    }

    private int calculate(int base, int multiplier, int power) {
        int result = base;
        for (int p=0; p<power; p++) {
            result = result * multiplier;
        }
        return result;
    }

    private int number(int index) {
       int half = index / 2;
       int number;
       if (index%2 == 0) {
           number = calculate(2, 3, half);
       } else {
           number = calculate(5, 4, half);
       }
       return number;
    }
}

该程序的输出是:

0:2
1:5
2:6
3:20
4:18
5:80
6:54
7:320
8:162
9:1280
10:486

所以你的问题的答案是:468。

答案 4 :(得分:2)

使用Sloane's Integer Sequences。这就是专业数学家的出发点。

答案 5 :(得分:1)

很简单:

a1=2
a2=4
a3=a1*3
a4=a2*4
a5=a3*3
a6=a4*4

通常:

a(2k+1)=a(2k-1)*3
a(2k)=a(2k-2)*4

答案 6 :(得分:0)

51,128是下一个号码。在差分行中没有收敛,因此三角形减少到16,125。

答案 7 :(得分:0)

486

将2个序列与数字列表分开2 5 6 20 18 80 54 320 162 1280

2 6 18 54 162 5 20 80 320 1280

第1行是3x第4行是4 x 所以接下来的顺序是3x 162,下一个数字是4x 1280