我编写了一个程序来查找公共的主要除数,最大的公共除数和最小的倍数。我的方法是先找到 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'的公共质数。
那我的代码有什么问题呢?
答案 0 :(得分:1)
如果为m = 2
,则无法执行以下循环,因为2-1 = 1
,并且i
从2
开始。
for (i = 2; i <= m - 1; i++)
此外,if (k=1)
是一项分配。您需要if (k==1)
。