趣味分数

最大公约数
#include <iostream>
int main(int argc, char** argv) {
	 int m,n,t,i,max=0;
	 	 scanf("%d%d",&m,&n);
	 if(m>n){
	 	t=m;m=n;n=t;
	 }
	 for(i=m;i>=1;i--){//注意
	 	if(m%i==0&&n%i==0){
	 	  break;
		 }
	 }
	 printf("%d\n",i);
	return 0;
}


辗转相除法求最大公约数
#include<stdio.h>
int main(){
	int t,m,n,k;
	scanf("%d%d",&m,&n);
	if(n>m){
		t=m;m=n;n=t;
	}
	k=m%n;
	while(k!=0){	
		m=n;n=k;k=m%n;
	}
	printf("%d",n);
	return 0;
}


最小公倍数、
#include<stdio.h>
int main(){
	int m,n,k,t;
			scanf("%d%d",&m,&n);
	if(m>n){//使n作为最大的 
		t=m;m=n;n=t;
	}
	int i=1;
	while(true){
		 k=n*i;
		if(k%m==0&&k%n==0)
		break;
	}	
	printf("%d\n",k);
	
	return 0;
}


最小公倍数等于两数乘积除以最大公约数

#include <stdio.h>
int main() {
	 int m,n,t,i;
	 	 scanf("%d%d",&m,&n);
	 if(m>n){
	 	t=m;m=n;n=t;
	}
	 for(i=m;i>=1;i--){//注意
	 	if(m%i==0&&n%i==0){
	 	  break;
		 }
	 }
	 printf("%d\n",m*n/i);
	return 0;
}



//将真分数化简为埃及分数
#include<stdio.h>
int main(){
    long int a,b,c;
    printf("请输入一个分数:(格式为a/b)");
    scanf("%d/%d",&a,&b);
    printf("它能被转换成:");
    while(true){
    	if(b%a!=0)//如果不能被整除,则分母是这个 
    		c=b/a+1;
		else//能被整除就可以直接输出 
		{
			c=b/a;
			a=1;
		}
		if(a==1){
		printf("1/%d\n",c);
		break;	
		}
		else
		printf("1/%d+",c);
       
	   
	   a=a*c-b;//求出余数的分子 
	   b=b*c;//求出余数的分母 
	   if(a==3&&b%2==0){//若余数的分子为三,分母是偶数,输出最后两个埃及分数 
	   	printf("1/%d+1/%d\n",b/2,b); 
	   	break;
	   }
	}
   return 0; 

} 


//列出真分数序列
只需要求出最大公约数,如果最大公约数是1,则为最简真分数

#include<stdio.h>
int main(){
	int m,k,max,n,i;
   for(i=1;i<40;i++){
   m=40;//每次要重新对m进行赋值 
   n=i;
   k=m%n;
   while(k!=0){//求最大公约数 
   m=n;n=k;k=m%n;
   }
   max=n;
   if(max==1){
   	printf("%d/40\n",i);//这个地方改为i 
   }
	}
   return 0;
} 
//计算多项式之和

#include<stdio.h>
int main(){
	double s=0,t=1;
	int i,n;
	scanf("%d",&n);
	for(i=1;i<=n;i++){
	   //t=1/i*t;
	   t=t*1/i;
	   s=s+t;
	}
	printf("%lf\n",s);
	return 0;
} 

//分数比较

#include<stdio.h>
int main(){
	int m,n,i,j;
	int num1,num2,k,bei;
	int one ,two;
	int max;
scanf("%d/%d,%d/%d",&m,&n,&i,&j);//两种输出方式 
	   // scanf("%d/%d",&m,&n);
		//scanf("%d/%d",&i,&j);
	
	if(n>j){
		num1=n;
		num2=j;
	}
	else{
		num1=j;
		num2=n;
	}

	for(i=num2;i>=1;i--){//注意
	 	if(num1%i==0&&num2%i==0){
	 	  break;
		 }
		
	 }
	  max=i;
	// printf("%d\n",i);//检验输出最大公约数 
	
	
	bei=n*j/max;//求出最小公倍数 
//	printf("%d\n",bei);//检验输出最小公倍数 
	one=(bei/n)*m;
	two=(bei/j)*i;
    if(one>two)
    printf("第一个分数大!\n");
    else
    printf("第二个分数大!\n");
        
        
	return 0;
}










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早日退休过上不劳而获生活

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值