c语言-给定两个数,求这两个数的最大公约数

cpp 复制代码
#include <stdio.h>
int test(int a, int b)
{
	while (b != 0)
	{
		int temp = a % b;
		a = b;
		b = temp;
	}

	return a;
}

int main()
{
	int a = 0, b = 0;
	scanf_s("%d%d", &a, &b);
	int c=test(a,b);
	printf("%d", c);
	return 0;
}

最大公约数(Greatest Common Divisor,简称 GCD) ,也叫最大公因数,指的是:对于两个或多个整数,能同时整除它们的最大正整数

举个例子:

  • 求 12 和 18 的最大公约数:

    1. 先列出 12 的所有约数(能整除 12 的数):1、2、3、4、6、12
    2. 再列出 18 的所有约数:1、2、3、6、9、18
    3. 找出两者共有的约数(公约数):1、2、3、6
    4. 其中最大的那个就是最大公约数:6

编程中求最大公约数的常用方法(欧几里得算法 / 辗转相除法):

两个数的最大公约数 = 较小数 和 两数相除余数 的最大公约数,直到余数为 0,此时的除数就是最大公约数。

代码执行过程(以 12 和 18 为例):

  1. 初始:a=12,b=18 → 计算 temp=12%18=12 → a=18,b=12
  2. 第二次循环:temp=18%12=6 → a=12,b=6
  3. 第三次循环:temp=12%6=0 → a=6,b=0 → 循环结束,返回 a=6
相关推荐
Omics Pro1 小时前
Arc研究所Cell|全新虚拟细胞官方基准评测框架
大数据·人工智能·深度学习·算法·机器学习
白狐_7981 小时前
408 数据结构|红黑树插入:只记两大类
数据结构
CoderYanger3 小时前
A.每日一题:1140. 石子游戏 II
java·程序人生·算法·leetcode·游戏·职场和发展·深度优先
小雨笙笙3 小时前
机器学习:评估模型与选择
人工智能·算法·机器学习
高亦真3 小时前
今天是学习嵌入式的第35天
linux·学习·算法
HugoStudio_SWAN3 小时前
洛谷 P1319 / P1320 压缩技术——同一枚硬币的正反面
c++·学习·程序人生·算法
wdfk_prog5 小时前
canopennode-rtt推荐,不只可以做从站,也可以承担主站角色
c语言·开发语言·数据库·学习·算法·深度优先
BioRunYiXue6 小时前
科研干货 | IC50全面解读:概念解析、实验设计与数据分析要点
java·开发语言·javascript·人工智能·算法·数据挖掘·数据分析
hahaha60166 小时前
HLS高层次综合设计技巧--UART_TX接收模块设计案例
人工智能·算法·计算机视觉
302wanger6 小时前
一个程序员看完《逆行人生》:电影没说透的,比电影更扎心
算法