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

发布时间 2023-05-21 11:03:50作者: 墩

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