寻找共同的主要除数

时间:2019-01-17 16:35:41

标签: c

我编写了一个程序来查找公共的主要除数,最大的公共除数和最小的倍数。我的方法是先找到 gcd ,然后将 gcd 分解为主要因子。这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int prime(int x) {
    int y;
    for (y = 2; y < x; y++) {
        if (x % y != 0)
            continue;
        else
            return 1;
    }
    return 0;
}
int main() {
    int n, m, i, gcd, lcm, k;
    // Input m and n
    printf("Enter m = ");
    scanf("%d",&m);
    printf("Enter n = ");
    scanf("%d",&n);
    // Common prime divisors
    lcm = m * n;
    while (m != n)
        if (m > n) m = m - n;
        else n = n - m;
    gcd = m;
    lcm = lcm / gcd;
    if (m <= 1)
        printf("No common prime divisors");
    else {
        printf("Common prime divisors: ");
        for (i = 2; i <= m - 1; i++) {
            k = prime(i);
            if (k = 1)
                if (m % i == 0)
                    printf("%d  ", i);
        }
    }
    printf("\nGreatest common divisor: %d\nLeast common multiple: %d", gcd, lcm);
    return 0;
}

该程序似乎正在运行,但是当我键入m = 2和n = 4时,没有出现应该为'2'的公共质数。
那我的代码有什么问题呢?

1 个答案:

答案 0 :(得分:1)

如果为m = 2,则无法执行以下循环,因为2-1 = 1,并且i2开始。

for (i = 2; i <= m - 1; i++) 

此外,if (k=1)是一项分配。您需要if (k==1)