数论整理之特殊数one:斐波那契数列

简介: 数论整理之特殊数one:斐波那契数列

数论整理

特殊数方面:


p.s. :黄金分割0.6180339887


①斐波那契数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368(等于将杨辉三角同一斜行的数加起来)


eg:兔子生孩子的增长方式 F(n) = F(n - 1)+F(n - 2)


通项公式  


78.png

79.png

特性:平方与前后项:从第二项开始,每个偶数项的平方都比前后两项之积少1,每个奇数项的平方和都比前后两项之积多1

80.png

应用:

one:矩形面积:前几项的平方和可以看成不同大小的正方形,由于斐波那契的递推公式可以拼成大的矩形。

81.png得恒等式:

83.png

two:每3个连续的数中有且只有一个被2整除,




每4个连续的数中有且只有一个被3整除,


每5个连续的数中有且只有一个被5整除,


每6个连续的数中有且只有一个被8整除,


每7个连续的数中有且只有一个被13整除,


每8个连续的数中有且只有一个被21整除,


每9个连续的数中有且只有一个被34整除,


three:尾数循环个位数是60步的循环,进一步,斐波那契数列的最后两位数是一个300步的循环,最后三位数是一个1500步的循环,最后四位数是一个15000步的循环,最后五位数是一个150000步的循环。


拓拓拓拓:

斐波那契–卢卡斯数列:如1,4,5,9,14,23…,因为1,4开头,可记作F[1,4],斐波那契数列就是F[1,1],卢卡斯数列就是F[1,3],斐波那契—卢卡斯数列就是F[a,b]。

eg:1 3 4 7 11 18……卢卡斯数列的通项公式为 f(n)=[(1+√5)/2] ^ n+[(1-√5)/2] ^ n


特殊联系:F(n)*L(n)=F(2n),及L(n)=F(n-1)+F(n+1)


84.png

任意两个或两个以上斐波那契—卢卡斯数列之和或差仍然是斐波那契—卢卡斯数列。如:F[1,4]n+F[1,3]n=F[2,7]n,F[1,4]n-F[1,3]n=F[0,1]n=F[1,1](n-1),F[1,4]数列:|4 * 4-1 * 5|=11


任何一个斐波那契—卢卡斯数列都可以由斐波那契数列的有限项之和获得。中间项的平方数与前后两项之积的差的绝对值是一个恒值。


f(n) = f(n-1) * p + f(n-2) * q,称为广义斐波那契数列。

当p=1,q=2时,我们得到佩尔—勾股弦数(跟边长为整数的直角三角形有关的数列集合)。


当p=2,q=-1时,我们得到等差数列。其中f1=1,f2=2时,我们得到自然数列1,2,3,4…。自然数列的特征就是每个数的平方与前后两数之积的差为1(等差数列的这种差值称为自然特征)。


//递归算法优化
# include <iostream>
# include <cstdio>
# define MAX (101)
using namespace std;
int a[MAX];
int f(int n){
    if(a[n]!=-1) return a[n];
    else{
        a[n]=f(n-1)+f(n-2);
        return a[n];
    }
}
int main(){
    int n;
    cin>>n;
    for(int i=0;i<=MAX-1;i++){        //初始化 
        a[i]=-1;
    }
    a[0]=0;a[1]=1;
    printf("%d",f(n));
    return 0;
}
//高精度计算
char sum[1200];
int s=0,m=0,n;
int main()
{
    cin>>n;
    string s1,s2;
    int a[1200],b[1200];
    int he,i;
    s1="0";
    s2="1";
    for(m=2;m<n;m++)
    {
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        a[0]=s1.length();
        for(i=1;i<=a[0];i++)
        {
            a[i]=s1[a[0]-i]-'0';
        }
        b[0]=s2.length();
        for(i=1;i<=b[0];i++)
        {
            b[i]=s2[b[0]-i]-'0';
        }
        he=(a[0]>b[0]?a[0]:b[0]);
        for(i=1;i<=he;i++)
        {
            a[i]+=b[i];
            a[i+1]+=a[i]/10;
            a[i]%=10;
        }
        he++;
        while((a[he]==0)&&(he>1))
        he--;
            for(i=he,s=0;i>=1;i--,s++)
            {
                sum[s]=a[i]+'0';
            }
        s1=s2;
        s2=sum;
    }
    cout<<s2<<endl;
    return 0;
}
相关文章
|
机器学习/深度学习 人工智能 C语言
【C/PTA】循环结构进阶练习(三)
【C/PTA】循环结构进阶练习(三)
695 0
|
缓存 Java API
Java工具篇之Guava-retry重试组件
Guava 是一组来自 Google 的核心 Java 库,其中包括新的集合类型(例如 multimap 和 multiset)、不可变集合、图形库以及用于并发、I/O、散列、缓存、原语、字符串等的实用程序!它广泛用于 Google 内部的大多数 Java 项目,也被许多其他公司广泛使用。 API 非常的简单,我们可以非常轻松的使用,来封装成我们业务中自己的组件。
1149 0
|
10月前
|
存储 人工智能 数据库
面向医疗场景的大模型 RAG 检索增强解决方案
本方案为您介绍,如何使用人工智能平台 PAI 构建面向医疗场景的大模型 RAG 检索增强解决方案。
|
前端开发 JavaScript
vue3【实战】创建项目、创建并提交代码到远程仓库,安装 SASS, 清除浏览器默认样式 reset-css, 清除模板代码,提升开发效率的必要集成
vue3【实战】创建项目、创建并提交代码到远程仓库,安装 SASS, 清除浏览器默认样式 reset-css, 清除模板代码,提升开发效率的必要集成
210 0
|
运维 监控 安全
网络安全基础:深入理解防火墙与入侵检测系统
【6月更文挑战第27天】本文探讨了防火墙和入侵检测系统(IDS)在网络安全中的核心作用。防火墙执行访问控制和数据包过滤,隔离内外网络,但可能无法应对所有威胁。IDS则实时监控网络,通过异常和误用检测发现潜在威胁,提供第二道防线。两者的协同工作增强了防御能力,降低了误报,实现了快速响应,共同构建全面的网络安全防护。理解和有效部署这两者对于保障信息安全至关重要。
|
Linux Python
Linux离线安装Python依赖包
本文介绍了在Linux环境下离线安装Python依赖包的方法,包括从Python依赖包检索网站下载所需依赖包的压缩文件,上传到Linux服务器,然后通过解压、编译和安装步骤完成依赖包的安装。
1010 0
|
存储 算法 调度
【数据结构入门精讲 | 第五篇】栈知识点及考研408、企业面试练习
【数据结构入门精讲 | 第五篇】栈知识点及考研408、企业面试练习
837 0
|
机器学习/深度学习 人工智能
【C/PTA】数组进阶练习(三)
【C/PTA】数组进阶练习(三)
574 0
|
SQL 运维 安全
基于web漏洞扫描及分析系统设计_kaic
随着信息技术的发展和网络应用在我国的普及,针对我国境内信息系统的恶意网络攻击也越来越多,并且随着黑客攻击技术的不断地更新,网络犯罪行为变得越来越难以应对,用户日常访问的网站是否安全对于普通网民而言难以辨别,保护人民不受不法侵害也是难上加难。如何识别网站的潜在危险性,以及网站出现安全性问题该如何防御,尽可能减少网站被攻击后造成的实际损失,是目前迫切需要解决的难题。 本文使用VMware虚拟机技术模拟真实的网络环境,使用渗透测试技术对模拟网络进行薄弱点测试信息收集、攻击测试等,再现了渗透测试的重要流程和技术方法。在对目标主机实施渗透测试时,会从系统层面和Web层面两个维度进行测试,扫描出存在的漏洞
|
机器学习/深度学习 人工智能 C语言
【C/PTA】循环结构进阶练习(三)
【C/PTA】循环结构进阶练习(三)
293 0