c语言Fibonacci数列分数求和

来源:百度知道 编辑:UC知道 时间:2024/06/22 08:50:03
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
结果要用分数表示~最简分数~~

#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);
}

}

#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;