如何求所有的公约数(不是最大公约数)?

img

从2开始到两个数的最小数进行循环,能被两个数都整除的就是公约数

int CommonFactors(int a,int b)
{
    static int i = 0;
    int c=0;
    for(int k=b;k>=1;k--)
    {
        if(a%k==0 && b%k==0)
        {
            if(c==i)
            {
                i++;
                return k;
            }
            c++;
        }
    }
    return -1;
}

如有帮助,请采纳

def gcd(x , y):
    if y == 0:
        print(x)
    else:
        gcd(y, x%y)

if __name__ == '__main__':
    zu = input("请输入组数:")
    zushu = int(zu)

    for i in range(zushu):
        data = input("请输入两个整数,并空格间隔:")
        datas = data.split(' ')
        gcd(int(datas[0].strip()), int(datas[1].strip()))