导航:首页 > 文档加密 > 字符串使用波菲那契数列加密

字符串使用波菲那契数列加密

发布时间:2022-05-15 08:22:54

‘壹’ 求斐波那契数列的完整c语言程序,要能写出这个数列的前50项

长整型既然不能满足
我改成double了 可以
#include "stdio.h"
void main()
{
double f1,f2;
int i;
f1=1;
f2=1;
for(i=1;i<=25;i++)
{
printf("%18f %18f",f1,f2);
if(i%2==0)
printf("\n");
f1=f1+f2;
f2=f2+f1;
}

}

‘贰’ 关于c++斐波那契数列的问题!

i = 0;//初始化第一个问题

其次,while(i<=50)//这里存在数据丢失,即使是double类型,应该是也不能存放到第50项斐波那契数

如果你想输出斐波那契数列第50项甚至更多,可取得办法是用数组保存斐波那契额数。
有个相关地址链接,是用字符串保存数据的。就不在这里贴出来了。
自己去看,运行调试过,是可行的不错的代码
希望对你有帮助

‘叁’ Fibonacci数列输出80个以上的字符编码

我给个算法
因为结果数太大,就要构造数组保存结果,方法是数组的每一项对应数字的一个位。例如1234567890就可以这么表示,
int a[20];
a[0]=0,a[1]=9,a[2]=8,a[3]=7....
在求Fibonacci数列时,就要涉及到两个这样的数组相加,假如,一个数组是a[],另一个是b[];怎么完成相加呢?这么办,(a[0]+b[0]+cf[0])%10,(a[1]+b[1]+cf[1])%10,(a[2]+b[2]+cf[2])%10....
对应的就是和的个位,十位,百位....
上一次cf是进位cf[i]=(a[i]+b[i]+cf[i-1])/10;
cf[0]=0;
例如: 987 可表示为 a[0]=7,a[1]=8,a[2]=9,a[3]=0
876 可表示为 b[0]=6,b[1]=7,b[2]=8,b[3]=0
那么
a[0]+b[0]=13 数字位:(13+0)%10=3 进位:(13+0)/10=1
a[1]+b[1]=15 数字位:(15+1)%10=6 进位:(15+1)/10=1
a[2]+b[2]=17 数字位:(17+1)%10=8 进位:(17+1)/10=1
a[3]+b[3]=0 数字位:(0+1)%10=1 进位:(0+1)/10=0
所以最后结果将数字位组合,和为1863

只要处理好这种相加,Fibonacci数列,就不难了

语文水平有限,只到这里,如果不明白,就在网上搜搜
相关算法

‘肆’ 怎样根据斐波那契数列制密码,如这组是怎么解是怎么作

“斐波那契数列”的发明者,是意大利数学家列昂纳多·斐波那契(LeonardoFibonacci,生于公元1170年,籍贯大概是比萨,卒于1240年后)。他还被人称作“比萨的列昂纳多”。1202年,他撰写了《珠算原理》(LiberAbaci)一书。他是第一个研究了印度和阿拉伯数学理论的欧洲人。他的父亲被比萨的一家商业团体聘任为外交领事,派驻地点相当于今日的阿尔及利亚地区,列昂纳多因此得以在一个阿拉伯老师的指导下研究数学。他还曾在埃及、叙利亚、希腊、西西里和普罗旺斯研究数学。《达·芬奇密码》中还提到过这个斐波那契数列..菲波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21……这个数列从第三项开始,每一项都等于前两项之和。它的通项公式为:(1/√5)*{[(1+√5)/2]^n-[(1-√5)/2]^n}【√5表示根号5】很有趣的是:这样一个完全是自然数的数列,通项公式居然是用无理数来表达的。该数列有很多奇妙的属性比如:随着数列项数的增加,前一项与后一项之比越逼近黄金分割0.6180339887……还有一项性质,从第二项开始,每个奇数项的平方都比前后两项之积多1,每个偶数项的平方都比前后两项之积少1如果你看到有这样一个题目:某人把一个8*8的方格切成四块,拼成一个5*13的长方形,故作惊讶地问你:为什么64=65?其实就是利用了斐波那契数列的这个性质:5、8、13正是数列中相邻的三项,事实上前后两块的面积确实差1,只不过后面那个图中有一条细长的狭缝,一般人不容易注意到如果任意挑两个数为起始,比如5、-2.4,然后两项两项地相加下去,形成5、-2.4、2.6、0.2、2.8、3、5.8、8.8、14.6……等,你将发现随着数列的发展,前后两项之比也越来越逼近黄金分割,且某一项的平方与前后两项之积的差值也交替相差某个值斐波那契数列别名斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。斐波那挈数列通项公式的推导斐波那挈数列:1,1,2,3,5,8,13,21……如果设F(n)为该数列的第n项(n∈N+)。那么这句话可以写成如下形式:F(1)=F(2)=1,F(n)=F(n-1)+F(n-2)(n≥3)显然这是一个线性递推数列。通项公式的推导方法一:利用特征方程线性递推数列的特征方程为:X^2=X+1解得X1=(1+√5)/2,X2=(1-√5)/2.则F(n)=C1*X1^n+C2*X2^n∵F(1)=F(2)=1∴C1*X1+C2*X2C1*X1^2+C2*X2^2解得C1=1/√5,C2=-1/√5∴F(n)=(1/√5)*{[(1+√5)/2]^n-[(1-√5)/2]^n}【√5表示根号5】通项公式的推导方法二:普通方法设常数r,s使得F(n)-r*F(n-1)=s*[F(n-1)-r*F(n-2)]则r+s=1,-rs=1n≥3时,有F(n)-r*F(n-1)=s*[F(n-1)-r*F(n-2)]F(n-1)-r*F(n-2)=s*[F(n-2)-r*F(n-3)]F(n-2)-r*F(n-3)=s*[F(n-3)-r*F(n-4)]……F(3)-r*F(2)=s*[F(2)-r*F(1)]将以上n-2个式子相乘,得:F(n)-r*F(n-1)=[s^(n-2)]*[F(2)-r*F(1)]∵s=1-r,F(1)=F(2)=1上式可化简得:F(n)=s^(n-1)+r*F(n-1)那么:F(n)=s^(n-1)+r*F(n-1)=s^(n-1)+r*s^(n-2)+r^2*F(n-2)=s^(n-1)+r*s^(n-2)+r^2*s^(n-3)+r^3*F(n-3)……=s^(n-1)+r*s^(n-2)+r^2*s^(n-3)+……+r^(n-2)*s+r^(n-1)*F(1)=s^(n-1)+r*s^(n-2)+r^2*s^(n-3)+……+r^(n-2)*s+r^(n-1)(这是一个以s^(n-1)为首项、以r^(n-1)为末项、r/s为公差的等比数列的各项的和)=[s^(n-1)-r^(n-1)*r/s]/(1-r/s)=(s^n-r^n)/(s-r)r+s=1,-rs=1的一解为s=(1+√5)/2,r=(1-√5)/2参考资料/view/816.htm?rh=255

‘伍’ 斐波那契数列计算前100项,溢出若用字符串该怎么处理

需要编写高精度计算程序才行。
具体内容可参考我的这篇文章:
http://wenzhang..com/page/view?key=38607b51aacd08aa-1426190280

‘陆’ 斐波那契数列(个十百千万的那个“位”)1000位以内可以任意输出,并且保证不溢出(使用C++字符串)

什么叫任意输出,是指你输入第多少个数(1000以内),它输出对应的数吗?

‘柒’ c语言编写的程序,在输入密码时,如何加密

加密和解密算法是程序编制中的重要一环。试想,如果我们平时使用的腾讯QQ、支付宝支付密码、今日头条账号密码那么轻易就被别人盗取的话,很多不可以预料的事情就会发生!

在现实生活中,我们遇到过太多QQ密码被盗取的情况,有的朋友QQ被盗之后,骗子利用朋友间信任骗取钱财的事情屡见不鲜。支付宝也曾出现过支付宝账户被恶意盗取的事件,对用户利益造成了严重损害!这些在技术上都指向了同一相关问题:软件加密算法的强壮程度。今天,小编利用C语言来简单实现一种加密方法。下面是源代码。

需要说明:程序利用了ascii码值的按照一定规律变换实现加密,对于解密过程,则是加密的逆过程。下面是程序的运行结果。

4190阅读
搜索
编程免费课程300节
初学编程100个代码
java自学一般要学多久
5秒破解excel密码
python必背100源代码
40岁零基础学编程

‘捌’ c语言问题斐波那契数列

#include<stdio.h>
unsigned long long int a[100]={1,1};
int main()
{
unsigned int i,n;
double sum=0;
scanf("%d",&n);//the maxvalue of n is 46,when it's 47,it will be flower!!!!
for(i=2;i<=n;i++)
a[i]=a[i-1]+a[i-2];
for(i=0;i<n;i++)
sum+=a[i];
printf("the average:%.3lf",(sum/i));
}//斐波那契数列

‘玖’ c语言 斐波那契数列要 算到第200项怎么解决 啊

// 高精度,能算到任意位
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

// 字符串形式的整数 numA 和 numB 相加,返回一个字符串形式的整数结果
char * add(char *numA,char *numB)
{
int resultLen = strlen(numA)>strlen(numB)? strlen(numA)+2 : strlen(numB) + 2;
char * result = (char*)malloc(sizeof(char) * resultLen);
int i , j , k;
int a , b;
int c;

result[resultLen - 1] = '\0';
// c 保存低位向高位的进位
c = 0;
for(k = resultLen - 2 , i = strlen(numA) - 1 , j = strlen(numB) - 1;
k >=0;
i--,j--,k--
)
{
a = b = 0;

if(i >=0 )
{
a = (numA[i]- '0') ;
}
if(j >= 0)
{
b = (numB[j] - '0');
}

// 求当前位
result[k] = a + b + c ;
// 想高位进位
c = result[k] / 10 ;
// 当前位进位后的结果
result[k] = result[k] % 10 + '0';

}

// 去掉结果的前导 0
i = 0 ;
while(i < resultLen && result[i] == '0')
{
i ++;
}

// debug
//printf("%s + %s = %s\n",numA,numB,result);

// 如果结果为 0
if(i == resultLen)
{
return &result[i-1];
}
// 返回去掉前导 0 的结果
else
{
return &result[i];
}
}

int main(int argc, char *argv[])
{
char *x ;
char *y ;
char *z;
int i,n;
while(scanf("%d",&n)!= EOF)
{
if(n== 0 || n == 1)
{
printf("n=%6d : %d\n",n,1);
}
else
{
x = y = "1";
for(i = 2 ; i <= n ; i ++)
{
z = add(x,y);
free(x);
x = y;
y = z;
}
printf("n=%6d : %s\n",n,z);
}
}
return 0;
}
/*
运行结果:
输入:
1
2
3
4
5
6
7
8
9
10
20
30
40
50
60
80
100
200
400
600
1000
10000

输出:

n= 1 : 1

n= 2 : 2

n= 3 : 3

n= 4 : 5

n= 5 : 8

n= 6 : 13

n= 7 : 21

n= 8 : 34

n= 9 : 55

n= 10 : 89

n= 20 : 10946

n= 300 :

n= 1000 :

n= 10000 : 758695431591724

11185597501

*/

阅读全文

与字符串使用波菲那契数列加密相关的资料

热点内容
卡尔曼滤波算法书籍 浏览:769
安卓手机怎么用爱思助手传文件进苹果手机上 浏览:844
安卓怎么下载60秒生存 浏览:803
外向式文件夹 浏览:240
dospdf 浏览:431
怎么修改腾讯云服务器ip 浏览:392
pdftoeps 浏览:496
为什么鸿蒙那么像安卓 浏览:736
安卓手机怎么拍自媒体视频 浏览:186
单片机各个中断的初始化 浏览:724
python怎么集合元素 浏览:481
python逐条解读 浏览:833
基于单片机的湿度控制 浏览:499
ios如何使用安卓的帐号 浏览:883
程序员公园采访 浏览:812
程序员实战教程要多长时间 浏览:979
企业数据加密技巧 浏览:135
租云服务器开发 浏览:814
程序员告白妈妈不同意 浏览:337
攻城掠地怎么查看服务器 浏览:601