C语言如何求两个数的最大公约数

C语言如何求两个数的最大公约数

思维:辗转相除法
分析过程
给定两个整数,运用辗转相除法,辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。
例如,求(319,377):
∵ 319÷377=0(余319)
∴ (319,377)=(377,319);
∵ 377÷319=1(余58)
∴ (377,319)=(319,58);
∵ 319÷58=5(余29)
∴ (319,58)=(58,29);
∵ 58÷29=2(余0)
∴ (58,29)= 29;
∴ (319,377)=29。
把这种方法写进代码里,可以先随意得到两个整数,运用while循环,用两个数相互%的值,用另一整数再去模这个余数,最终当模一个数余0时,这个数就是这两个数的最大公约数,代码如下

#include <stdio.h>
int main() {
	int a = 0;
	int b = 0;
	int c = 0;
	scanf("%d %d", &a, &b);
	while (b!=0) {
		c = a%b;
		a = b;
		b = c;
	}
	printf("%d", a);
	system("pause");
	return 0;
}

输入:319 377
输出:29
输入:98 63
输出:7

猜你喜欢

转载自blog.csdn.net/a_hang_szz/article/details/88634736