c语言Fibonacci数列分数求和

Fibonacci数列大家已经熟悉F[1]=1F[2]=1F[n]=F[n-1]+F[n-2](n>2)有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13... Fibonacci数列大家已经熟悉F[1]=1 F[2]=1 F[n] = F[n-1]+F[n-2] (n>2)
有一分数序列:
2/1,3/2,5/3,8/5,13/8,21/13,....
该分数序列的通项为 A[n] = F[n+2] / F[n+1]
求出这个数列的前n项之和。n <= 13

Input

输入数据量t表示下面有t组数据
每组数据有一个正整数n

Output

对于每组数据输出序列总和,格式见sample
要求化成最简形式 即分母分子最大公约数为 1

Sample Input

2
1
2

Sample Output

2/1
7/2
结果要用分数表示~最简分数~~
展开
 我来答
vbtraz
2009-04-19 · TA获得超过5530个赞
知道大有可为答主
回答量:4152
采纳率:0%
帮助的人:4384万
展开全部
#include<stdio.h>
long long int nume, deno;

long long int prime(long long int bigger,long long int smaller)
{
if (smaller == 1) return 1;
if (smaller == 0) return bigger;
return prime(smaller, bigger%smaller);
}

void CalcA(int n)
{
int a = 1, b=1;
int i;
nume = 0;
deno = 1;
for (i=0; i< n; ++i)
{
if (a > b)
{
b += a;
nume *= a;
nume += deno*b;
deno *=a ;
} else
{
a += b;
nume *= b;
nume += deno*a;
deno *= b;
}
}

}

int main()
{
int n[1024] = {0};
int t;
int i;
long long int p;
scanf("%d", &t);
for (i=0; i<t; ++i)
{
scanf("%d", &n[i]);
}

for (i=0; n[i]>0; ++i)
{
CalcA(n[i]);
p = prime(nume, deno);
if (p>1) {nume /=p ; deno /= p;}
printf("%lld/%lld\n", nume, deno);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
轻候心思r1
2009-04-24
知道答主
回答量:9
采纳率:0%
帮助的人:0
展开全部
#include<stdio.h>
void main()
{
__int64 t,a,b,f1,f2,i,k,r,m,s;
char c='/';
scanf("%I64d",&t);
f1=1;f2=1;a=0;b=1;
for(i=1;i<=t;i++)
{
f1=f1+f2;
a=a*f2+b*f1;
b=f2*b;
k=f2;
f2=f1;
f1=k;

m=a;r=b;
while(r!=0)
{
s=m%r;m=r;r=s;
}
a=a/m;
b=b/m;
printf("%I64d%c%I64d\n",a,c,b);
}

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式