斐波那契数列素数

Fibonacci sequence primes

尽管进行了多次搜索,我还是找不到关于此的任何主题。很抱歉,如果这已在此处介绍。

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

我最近在玩斐波那契数列和素数。我注意到,至少对于该序列中的某些初始项,如果您标记序列中的所有素数(我为数字做了: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 对此有任何澄清!

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

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

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

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

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

根据the Fibonacci Prime article in Wikipedia

Except for the case n = 4, all Fibonacci primes have a prime index, ..., but not every prime is the index of a Fibonacci prime.

这意味着 以上的 1 不成立 ,正如您使用素数索引 19 所演示的那样,但是 2 以上 always 成立 除了 斐波那契素数 3 其斐波那契指数为 4.

为了将其带回编程,我的 Python 代码可重现您的 table(排序):

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  *******************
**  *******************
**  *******************
**  *******************
**  ********************