网站首页 网站地图
网站首页 > 电商创业 > 辗转相除法c语言

辗转相除法c语言

时间:2026-03-20 12:10:47

方法一:循环实现

```c

include

int gcd(int a, int b) {

while (b != 0) {

int temp = a % b;

a = b;

b = temp;

}

return a;

}

int main() {

int a = 24, b = 36;

printf("GCD of %d and %d is: %d\n", a, b, gcd(a, b));

return 0;

}

```

方法二:递归实现

```c

include

int gcd(int a, int b) {

if (b == 0) {

return a;

} else {

return gcd(b, a % b);

}

}

int main() {

int a = 24, b = 36;

printf("GCD of %d and %d is: %d\n", a, b, gcd(a, b));

return 0;

}

```

方法三:输入两个整数并计算最大公约数

```c

include

int gcd(int a, int b) {

while (b != 0) {

int temp = a % b;

a = b;

b = temp;

}

return a;

}

int main() {

int num1, num2;

printf("请输入两个整数: ");

scanf("%d %d", &num1, &num2);

int result = gcd(num1, num2);

printf("最大公约数是: %d\n", result);

return 0;

}

```

方法四:使用第三方库(如GMP)

如果你需要处理非常大的整数,可以使用GNU Multiple Precision Arithmetic Library (GMP)。

```c

include

include

int main() {

mpz_t a, b, result;

mpz_init_set_str(a, "24", 10);

mpz_init_set_str(b, "36", 10);

mpz_init(result);

mpz_gcd(result, a, b);

gmp_printf("GCD of %Zd and %Zd is: %Zd\n", a, b, result);

mpz_clear(a);

mpz_clear(b);

mpz_clear(result);

return 0;

}

```

这些方法都可以用来计算两个整数的最大公约数(GCD)。选择哪种方法取决于你的具体需求和整数的大小。对于一般用途,循环实现和递归实现已经足够高效。如果你需要处理非常大的整数,建议使用GMP库。