本文主要是介绍高精度打表-Factoring Large Numbers,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
求斐波那契数,不打表的话会超时,打表的话普通的高精度开不出来那么大的数组,不如一个int存8位,特殊处理一下,具体看代码
#include<stdio.h>
#include<string.h>
#define MAX_SIZE 5005
#define LEN 150
#define to 100000000/*一个int存8位*/
int num[MAX_SIZE][LEN];
void get_num()
{int i,j,k;num[0][0]=0;/*第一个斐波那契数*/num[1][0]=1;/*第二个斐波那契数*/for(i=2;i<MAX_SIZE;i++){for(j=0;j<LEN;j++){num[i][j]=num[i-1][j]+num[i-2][j];}for(j=0;j<LEN-1;j++){/*开始进位*/num[i][j+1]+=num[i][j]/to;num[i][j]%=to;}}
}
void put_num(int n)
{int i,ok;printf("The Fibonacci number for %d is ",n);for(i=LEN-1,ok=0;i>=0;i--){if(ok){char number[10];int L;sprintf(number,"%d",num[n][i]);L=strlen(number);for(int k=0;k<8-L;k++) printf("0");printf("%s",number);}else if(num[n][i]!=0)/*从第一个不等于0的数开始数*/{printf("%d",num[n][i]);ok=1;}}
}
int main()
{/*freopen("out.txt","w",stdout);*/int n;get_num();while(scanf("%d",&n)!=EOF){if(!n) printf("The Fibonacci number for 0 is 0");elseput_num(n);printf("\n");}return 0;
}
这篇关于高精度打表-Factoring Large Numbers的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!