導航:首頁 > 文檔加密 > 字元串使用波菲那契數列加密

字元串使用波菲那契數列加密

發布時間: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

*/

閱讀全文

與字元串使用波菲那契數列加密相關的資料

熱點內容
湖南省常德通用壓縮機有限公司 瀏覽:109
伺服器的雙電是什麼意思 瀏覽:614
程序員離開後代碼運行幾天 瀏覽:386
多多樂app是什麼幹嘛的 瀏覽:346
文檔加密授權工具 瀏覽:436
命令與征服將軍閃退 瀏覽:132
vs2019預編譯怎麼設置 瀏覽:780
沈陽中軟python培訓班 瀏覽:493
逆戰文件夾怎麼放 瀏覽:120
怎麼統一刪除文件夾raw文件 瀏覽:121
卡爾曼濾波演算法書籍 瀏覽:769
安卓手機怎麼用愛思助手傳文件進蘋果手機上 瀏覽:844
安卓怎麼下載60秒生存 瀏覽:803
外向式文件夾 瀏覽:240
dospdf 瀏覽:431
怎麼修改騰訊雲伺服器ip 瀏覽:392
pdftoeps 瀏覽:496
為什麼鴻蒙那麼像安卓 瀏覽:736
安卓手機怎麼拍自媒體視頻 瀏覽:186
單片機各個中斷的初始化 瀏覽:724