Я написал программу для поиска общих простых делителей, наибольших общих делителей и наименьших общих кратных. Мой метод - сначала найти 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', не появляются.
Так что не так в моем коде?