Онлайн компилятор C

#include <stdio.h> int main() { int n, m, i=0,j=0; scanf("%d%d", &n, &m); if (i==m || i==n){ printf("%d", i); return 0; } while (i!=m || i!=n){ if (n%i==0 && m%i==0){ j=i; } i++; } printf("%d", j); return 0; }
This code attempts to find the greatest common divisor (GCD) of two numbers entered by the user, but it has several issues that prevent it from working correctly.

- The initial `if` condition checks if `i` equals `m` or `n`, but `i` is 0 at that point, so it will only trigger if one of the numbers is 0, which is not the intended logic.
- The `while` loop condition `i != m || i != n` will always be true because `i` cannot equal both `m` and `n` at the same time unless they are equal, causing an infinite loop.
- The loop starts with `i = 0`, and you try to compute `n % i` and `m % i` when `i` is 0, which causes a division by zero error.
- The algorithm does not correctly find the GCD; you need to think about how to iterate through possible divisors in a way that avoids these problems.