【问题标题】:Fibonacci sequence primes斐波那契数列素数
【发布时间】:2018-01-30 15:14:08
【问题描述】:

尽管进行了多次搜索,但我无法找到任何关于此的主题。抱歉,如果此处已涵盖此内容。

任何人都可以为我指出正确的方向以进一步研究以下主题:

我最近玩过斐波那契数列和素数。我注意到,至少对于该序列中的某些初始项目,如果您标记序列中的所有素数(我为数字做了它:2(奇素数)、3、5、13、89、233、1597、28657)并检查它们在序列中的位置,结果也是素数。我假设 0 是第 0 项。举一些例子:对于 2(奇素数) - 这是序列的第 3 个数字 - 3 也是一个素数,对于 13 是序列的第 7 个数字 - 7 也是素数,对于 233 - 是序列的第 17 个数字- 17 也是质数。这似乎对序列中最多 17 个项目的所有素数都是正确的,然后它开始发散,因为序列的第 19 个(19 是素数)数是 4181,它不是素数。

举个直观的例子:

    item number Fib number  
    0       0   
    1       1   
    2       1   
prime   3       2   prime   !
not prm 4       3   prime
prime   5       5   prime   !
    6       8   
prime   7       13  prime   !
    8       21  
    9       34  
    10      55  
prime   11      89  prime   !
    12      144 
prime   13      233 prime   !
    14      377 
    15      610 
    16      987 
prime   17      1597    prime   !
    18      2584    
prime   19      4181    not prime
    20      6765    
    21      10946   
    22      17711   
prime   23      28657   prime   !
    24      46368   
    25      75025   
    26      121393  
    27      196418  
    28      317811  
prime   29      514229  prime   !
    30      832040  
prime   31      1346269 not prime
    32      2178309 
    33      3524578 
    34      5702887 
    35      9227465 
    36      14930352    
prime   37      24157817    not prime
    38      39088169    
    39      63245986    
    40      102334155   
    41      165580141

尽管序列中有某些数字是素数,但它们的序列号不是素数,反之亦然,但了解为什么会出现这种模式以及大多数斐波那契序列号是否为真仍然很有趣。

再次道歉,如果这是显而易见的事情。

TIA 对此作出任何澄清!

【问题讨论】:

标签: math sequence primes fibonacci


【解决方案1】:

您似乎在这里混合了两种不同的想法:

  1. 如果我用素数索引斐波那契数列,我会找到素数吗 那里?

  2. 如果我在斐波那契数列中找到一个素数,它的索引会是 素数?

根据the Fibonacci Prime article in Wikipedia

除了 n = 4 的情况,所有斐波那契素数都有一个素数索引, ...,但不是每个素数都是斐波那契素数的索引。

这意味着 1 高于 成立,正如您用素数索引 19 演示的那样,但 2 高于 总是 em> 对斐波那契指数为 4 的斐波那契素数 3 持有 except

为了把它带回编程,我的 Python 代码来重现你的表(排序):

def is_prime(n):
    if n > 1 and n % 2 != 0 or n == 2:
        for i in range(3, int(n ** 0.5) + 1, 2):
            if n % i == 0:
                break
        else:
            return n

    return '*' * len(str(n))

print('n', 'f', sep='\t')

f, p, n = 0, 1, 0

while True:
    print(is_prime(n), is_prime(f), sep='\t')

    f, p, n = f + p, f, n + 1

输出

n   f
*   *
*   *
2   *
3   2
*   3
5   5
*   *
7   13
*   **
*   **
**  **
11  89
**  ***
13  233
**  ***
**  ***
**  ***
17  1597
**  ****
19  ****
**  ****
**  *****
**  *****
23  28657
**  *****
**  *****
**  ******
**  ******
**  ******
29  514229
**  ******
31  *******
**  *******
**  *******
**  *******
**  *******
**  ********
37  ********
**  ********
**  ********
**  *********
41  *********
**  *********
43  433494437
**  *********
**  **********
**  **********
47  2971215073
**  **********
**  **********
**  ***********
**  ***********
**  ***********
53  ***********
**  ***********
**  ************
**  ************
**  ************
**  ************
59  ************
**  *************
61  *************
**  *************
**  *************
**  **************
**  **************
**  **************
67  **************
**  **************
**  ***************
**  ***************
71  ***************
**  ***************
73  ***************
**  ****************
**  ****************
**  ****************
**  ****************
**  ****************
79  *****************
**  *****************
**  *****************
**  *****************
83  99194853094755497
**  ******************
**  ******************
**  ******************
**  ******************
**  *******************
89  *******************
**  *******************
**  *******************
**  *******************
**  ********************

【讨论】:

    【解决方案2】:

    您可能想查看A001605 并点击那里的链接。整数序列在线百科全书是此类事情的绝佳资源。

    我还在my blog 讨论斐波那契素数。

    【讨论】:

      猜你喜欢
      • 2017-04-21
      • 2015-06-05
      • 2013-08-03
      • 2014-05-19
      • 2015-08-30
      • 2013-03-14
      • 2013-02-24
      相关资源
      最近更新 更多