одно из главных умений программиста - это искать инфу в интернете. загугли "наибольший общий делитель двух чисел на си" и будет тебе счастье
lolisc, тут код long Nod(long a, long b) { while (a && b) if (a >= b) a %= b; else b %= a; return a | b; } C long Nod(long a, long b) { while (a && b) if (a >= b) a %= b; else b %= a; return a | b; } long Nod(long a, long b) { while (a && b) if (a >= b) a -= b; else b -= a; return a | b; } C long Nod(long a, long b) { while (a && b) if (a >= b) a -= b; else b -= a; return a | b; } long Nod(long a, long b) { long deg = 0; if (a == 0 || b == 0) return a | b; while (((a | b) & 1) == 0) { deg++; a >>= 1; b >>= 1; } while (a && b) { if (b & 1) while ((a & 1) == 0) a >>= 1; else while ((b & 1) == 0) b >>= 1; if (a >= b) a = (a - b) >> 1; else b = (b - a) >> 1; } return ((a | b) << deg); } C long Nod(long a, long b) { long deg = 0; if (a == 0 || b == 0) return a | b; while (((a | b) & 1) == 0) { deg++; a >>= 1; b >>= 1; } while (a && b) { if (b & 1) while ((a & 1) == 0) a >>= 1; else while ((b & 1) == 0) b >>= 1; if (a >= b) a = (a - b) >> 1; else b = (b - a) >> 1; } return ((a | b) << deg); }