day 34 将真分数分解成埃及分数

 1.如果有分数a/b,b%a==0;即可直接化简;

2.若不满足1,这分离出分母为(b/a)+1的埃及分数;

3.重复1,2;

 

#include<iostream>

using namespace std;

int a,b;
int flag=0;

int g(int m,int n){
if(m<m){swap(m,n);}
int t=1;
while(t){
t=m%n;
m=n;
n=t;
}
return m;
}
void f(int t){
a=a*t/g(b,t)-b/g(b,t);
b=b*t/g(b,t);
flag=g(a,b);
a=a/flag;
b=b/flag;
}


int main(){
int num;
printf("请输入一个真分数:");
int c[100];
scanf("%d/%d",&a,&b);
flag=g(a,b);
a=a/flag;
b=b/flag;
int i=0;
while(b%a!=0){
c[i]=(b/a)+1;
f(c[i]);
i++;
}
c[i]=b;
for(int j=0;j<=i;j++){
printf("1/%d\n",c[j]);
}
return 0;
}

 

posted @   The-rich  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示