| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1179 人关注过本帖
标题:[求助]Fibonacci数列问题高精度计算如何实现啊
只看楼主 加入收藏
victor2006
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-4-16
收藏
 问题点数:0 回复次数:1 
[求助]Fibonacci数列问题高精度计算如何实现啊

现在碰到个问题,老师让我们编一个不大于某数的Fibonacci数,该数的大小上限为10的1000次方,我只知道用字符数组存,但如何实现啊

[此贴子已经被作者于2007-4-18 20:16:46编辑过]

搜索更多相关主题的帖子: Fibonacci 高精度 上限 字符 
2007-04-16 18:38
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 

和你意思不是完全一样应该改改数组大小就够了.
#include<stdio.h>/*输出在a到b范围内的fib数列的个数*/
#include<string.h>
int compare(int a[],int b[])
{
int i,j;
for(i=109;a[i]!=0;i--);
for(j=109;b[j]!=0;j--);
if(i<j)
return 1;
else if(i>j)
return 0;
else
{
while(i>=0)
{
if(a[i]<b[i])
return 1;
else if(a[i]>b[i])
return 0;
else
i--;
}
if(i==-1)
return 0;
}
}
int compare1(int a[],int b[])
{
int i,j;
for(i=109;a[i]!=0;i--);
for(j=109;b[j]!=0;j--);
if(i<j)
return 1;
else if(i>j)
return 0;
else
{
while(i>=0)
{
if(a[i]<b[i])
return 1;
else if(a[i]>b[i])
return 0;
else
i--;
}
if(i==-1)
return 1;
}
}
void jisuan(int a[],int b[])
{
int temp[110]={0};
int i;
for(i=0;i<109;i++)
{
temp[i]+=a[i]+b[i];
temp[i+1]+=temp[i]/10;
temp[i]%=10;
}
for(i=0;i<109;i++)
{
a[i]=b[i];
b[i]=temp[i];
}
}

int main()
{
char a[110],b[110];
int c[110],d[110],f1[110],f2[110];
int i,j,count;
while(scanf("%s %s",a,b))
{
if(a[0]=='0'&&b[0]=='0')
break;
else
{
for(i=0;i<109;i++)
c[i]=d[i]=f1[i]=f2[i]=0;
f1[0]=1;
f2[0]=2;
i=strlen(a)-1;
for(j=0;i>=0;i--,j++)
c[j]=a[i]-'0';
i=strlen(b)-1;
for(j=0;i>=0;i--,j++)
d[j]=b[i]-'0';
while(compare(f1,c))
{
jisuan(f1,f2);
}
count=1;
while(compare1(f1,d))
{
jisuan(f1,f2);
/*在这个地方输出数组f1就是在该范围的的元素*/
count++;
}
printf("%d\n",--count);
}
}
return 0;
}


2007-04-16 20:28
快速回复:[求助]Fibonacci数列问题高精度计算如何实现啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013404 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved