UVa 10236 - The Fibonacci Primes(斐波那契素数)

本文探讨了斐波那契数列中的素数定理,即当索引i为素数(且i>5)时,对应的斐波那契数fib(i)为素数。通过筛选22000个素数并使用C语言实现算法,演示如何判断斐波那契数的素性,并提供了一个具体的代码实现案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

斐波那契素数定理:

斐波那契数列中,若i为素数(i>5),则fib(i)为素数

筛出22000个素数,得需要遍历到250000,本题要求保留前10位,用double存储斐波那契数列即可

附:

#include <stdio.h>
#include <string.h>
#include <math.h>
bool isprime[250010];
int prime[25010];
long double fib[250010];
int main()
{
    memset(isprime,0,sizeof(isprime));
    for(int i=2; i<=500; i++)
    {
        for(int j=i*i; j<=250000; j+=i)
            isprime[j]=1;
    }
    int p=1;
    for(int i=2; i<=250000; i++)
    {
        if(!isprime[i])
        {
            prime[p++]=i;
        }
    }
    prime[1]=3;
    prime[2]=4;
    memset(fib,0,sizeof(fib));
    fib[0]=fib[1]=1;
    int flag=0;
    for(int i=2; i<=250000; i++)
    {
        if(flag==1){fib[i]=fib[i-1]+fib[i-2]/10;flag=0;}
        else {fib[i]=fib[i-1]+fib[i-2];flag=0;}
        if(fib[i]>1e9){fib[i]/=10;flag=1;}
    }
    int n;
    while(scanf("%d",&n)==1)
    {
        printf("%d\n",(int)fib[prime[n]-1]);
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值