PAT B1062遇到问题,测试点全错

样例可以正确输出,但是所有测试点全错,不知问题出在哪里?请各位指点!


#include<bits/stdc++.h>
using namespace std;

int main(){
    int n1,m1,n2,m2,k,flag=0;
    scanf("%d/%d %d/%d %d",&n1,&m1,&n2,&m2,&k);
    //先求分母的最大公约数,再求分母的最小公倍数,通分
    //通分后可以的到两个分子,分别是上下限,再遍历这个上下限中间所有的数
    //如果出现分子和该分母化简后分母为K,那么就可以输出了 
    int a=m1,b=m2;
    while (b) {
        int c=a%b;
        a=b;b=c;
    }//此时a就是最大公约数
    int max_common_divisor=a;
    int min_common_multiple=m1*m2/a;
    int min_numerator=n1*(min_common_multiple/m1),max_numerator=n2*(min_common_multiple/m2);
    if (min_numerator>max_numerator) swap(min_numerator,max_numerator);
    for (int i=min_numerator;i<=max_numerator;i++){
        //现在的分数为 i/min_common_multiple
        int a=i,b=min_common_multiple;
        while (b){
            int c=a%b;
            a=b;b=c;
        }//找到了目前分子分母的最大公约数 
        if((min_common_multiple/a)==k){
            if (!flag) {
                printf("%d/%d",i/a,k);
                flag=1;
            }
            else printf(" %d/%d",i/a,k);
        } 
    }
    return 0;
}