求调和级数前n项和的分式表示(或求分式累计和并用分式表示)

思路:
运用分式的通分再相加;
再用辗转相除法求分子分母的最大公约数,将分子分母同除最大公约数,即可得到分式最简式;

#include<stdio.h>
int z1=1,z2=1;//全局变量,用于存前n-1项和的分子及分母 
int Max(int a,int b){
//辗转相除法求两数最大公约数 
	int r,max,temp;
	if(a<b){//保证最大数存于a 
		temp=a;
		a=b;
		b=temp;
	}
	do{
		r=a%b;
		a=b;
		b=r;
	} while(r!=0);
	max=a;
	return max;
}

//求两个分数的和,并用分数表示x1/x2,y1/y2
void Sum_2(int x1,int x2,int y1,int y2){
	z1=x1*y2+x2*y1;
	z2=x2*y2;
	int max=Max(z1,z2);//求最大公约数 
	z1/=max;
	z2/=max;
} 

int main(){
	int n;
	printf("请输入正整数n,以求调和级数前n项和\n");
	scanf("%d",&n);
	if(n==1){
		printf("结果为:1/1"); 
	}
	else{
		for(int i=2;i<=n;i++){
			Sum_2(z1,z2,1,i);
		}		
	printf("结果为:%d/%d",z1,z2);	
	}
	return 0;
} 
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页