69,382
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
int main(void)
{
int a[20],b[20];//a数组代表分母,b数组代表分子
a[0] = 1;
a[1] = 2;
b[0] = 2;
b[1] = 3;
int n;
long int sum,sub;
sum = 2;
sub = 7;
int m;
scanf("%d",&m);// m表示求的项数
for(n=2; n<m; n++)
{
a[n] = a[n-1]+a[n-2];
}
for(n=2; n<m; n++)
{
b[n] = b[n-1]+b[n-2];
}
for(n=2; n<m; n++)
{
sub = sub*a[n]+sum*b[n];
sum = sum*a[n];
unsigned int i=0, sq = 0;
sq = (unsigned int)sqrt((double)sum);
for(i=2; i<=sq; i++) //约分
{
if(sub%i==0 && sum%i==0)
{
sub = sub/i;
sum = sum/i;
sq = (unsigned int)sqrt((double)sum);
}
}
}
printf("%d/%d\n",sub,sum);
return 0;
}
#include<iostream>
using namespace std;
class A
{
public:
A(long int i, long int j) : x(i), y(j){}
void AddNext(long int a, long int b)
{
x = x * b + y * a;
y = y * b;
for (long int i = 2; i <= x && i <= y; i++)
{//约分
if ((x % i) == 0 && (y % i) == 0)
{
x /= i;
y /= i;
}
}
}
void print()
{
cout<<x<<'/'<<y<<endl;
}
private:
long int x;//分子
long int y;//分母
};
int main()
{
A result(2, 1);
int i, j, k, temp;
for (i = 3, j = 2, k = 0; k < 19; k++)//老半天才出结果,怕是溢出了!
{
result.AddNext(i, j);
temp = i;
i = i + j;
j = temp;
}
result.print();
system("pause");
return 0;
}
#include <stdio.h>
int main(void)
{
int a1=2,b1=1,a2=3,b2=2;
int s=0;
int i=0;
s+=a1/b1+a2/b2;
for(;i<18;i++)
{
a2=a1+a2;
b2=b1+b2;
s+=a2/b2;
a1=a2;
b1=b2;
}
printf("%d",s);
return(0);
}
#include "stdio.h"
#define N 22
long num[N];
void main()
{
int i,j,c;
double s,su,sum;
i=0;j=1;c=0;
s=1;sum=0;
while(c<=N)
{
num[c]=j;
j=i+j;
i=num[c++];
//printf("%d\t%d\n",j,c-1);
}
for(int k=1;k<21;k++)
{
printf("%d/%d",num[k+1],num[k]);
if(k<20)
printf("+");
}
for (i=0;i<20;i++)
{
s*=num[i];
}
for (i=1;i<21;i++)
{
su=s*num[i]/num[i-1];
sum+=su;
}
printf("\n=%f/%f",sum,s);
s=sum/s;
printf("=%f\n",s);
}
2/1+3/2+5/3+8/5+13/8+21/13+34/21+55/34+89/55+144/89+233/144+377/233+610/377+987/610+1597/987+2584/1597+4181/2584+6765/4181+10946/6765+17711/10946=310584899837265700000000000000000000000.000000/9692987370815490900000000000000000000.000000=32.042227
int i,j,c;
i=0;j=1;c=0;
while(c<=N)
{
num[c]=j;
j=i+j;
i=num[c++];
}
for(int k=1;k<=21;k++)
{
printf("%d/%d",num[k+1],num[k]);
if(k<21)
printf("+");
}
printf("=\n");
2/1+3/2+5/3+8/5+13/8+21/13+34/21+55/34+89/55+144/89+233/144+377/233+610/377+987/610+1597/987+2584/1597+4181/2584+6765/4181+10946/6765+17711/10946+28657/17711=32.660259......
#include<stdio.h>
int main(void)
{
int a[20],b[20];//a数组代表分母,b数组代表分子
a[0] = 1;
a[1] = 2;
b[0] = 2;
b[1] = 3;
int n,sum,sub,den=0;
sum = 2;
sub = 0;
for(n=2; n<20; n++)
{
a[n] = a[n-1]+a[n-2];
sum*=a[n]; //求出分母
}
for(n=2; n<20; n++)
{
b[n] = b[n-1]+b[n-2];
}
for(n=0; n<20; n++)
{
den = sum*b[n]/a[n];
sub+=den; //求出分子
}
unsigned int sq = 0;
sq = (unsigned int)sqrt((double)sum);
for(int i=2; i<sq; i++) //分母和分子约分
{
if(sub%i==0 && sum==0)
{
sub = sub/i;
sum = sum/i;
sq = (unsigned int)sqrt((double)sum);
}
}
printf("%d / %d",sub,sum);
}
#include<stdio.h>
void main()
{
unsigned int suma,sumb;
int t,i,a1,b1,a2,b2,c=0;
for(suma=2,sumb=1,a1=2,b1=1,i=2;i<=6;i++) /*分数a1/b1和a2/b2,这里累加到第十项*/
{
a2=a1+b1;
b2=a1;
suma=suma*b2+a2*sumb; /*suma表示最后求和的分子,sumb表示求和的分母*/
sumb=sumb*b2;
while(suma>=sumb) /*把假分数化成真分数,整数值为c*/
{
suma=suma-sumb;
c=c+1;
}
a1=a2;
b1=b2;
}
printf("%d/%d\n",a1,b1); /*输出第10项*/
printf("%d %d/%d\n",c,suma,sumb); /*输出前10项的和*/
}