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