【C语言】辗转相除法求最大公约数(详解)

news2024/11/17 3:41:17

辗转相除法求最大公约数

在这里插入图片描述

辗转相除法(又称欧几里德算法)是一种用于求解两个整数的最大公约数的方法。本文将使用C语言来实现辗转相除法,并对其原理进行解释。

辗转相除法的原理

辗转相除法的原理非常简单。假设有两个整数a和b,其中a > b。通过对a除以b求余数,得到余数r1。然后把b除以r1求余数,得到余数r2。如此重复,直到得到余数为0。那么这一系列的余数中的最后一个非零余数,就是a和b的最大公约数。即:

gcd(a, b) = gcd(b, r1) = gcd(r1, r2) = gcd(r2, r3) = … = gcd(r(n-1), rn) = gcd(rn, 0)

C语言实现

普通方法:

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int x = 0;

	scanf("%d %d", &a, &b);
	if (a < b)
	{
		//交换两个元素
		x = a;
		a = b;
		b = x;
	}
	else
	{
		//如果进入else,就是a>b,x就会为0,循环就会结束
		x = a % b;
		while (x != 0)
		{
			x = a % b;
			a = b;
			b = x;
		}
		printf("%d", a);
	}

	return 0;
}

下面是使用C语言实现辗转相除法求最大公约数的代码示例:

#include <stdio.h>

// 辗转相除法求最大公约数
int gcd(int a, int b) 
{
	if (b == 0)
	{
		return a;
	}
	else
	{
		return gcd(b, a % b);
	}
}

int main() {
	int a = 0;
	int b = 0;
	printf("请输入两个整数:");
	scanf("%d %d", &a, &b);
	int result = gcd(a, b);
	printf("最大公约数为:%d", result);
	return 0;
}

在上述代码中,我们使用递归的方式来实现辗转相除法。函数gcd接受两个整数a和b作为参数,如果b等于0,则返回a,否则递归调用自身,将b和a除以b取余数后的结果作为新的参数传入。直到b为0时,递归结束,返回a作为最大公约数。

main函数中,我们从用户输入获取两个整数a和b,然后调用gcd函数求得最大公约数,最后将结果输出。

运行结果

假设我们输入两个整数12和18,运行上述代码后,将得到如下输出:

请输入两个整数:12 18
最大公约数为:6

这说明12和18的最大公约数是6,验证了辗转相除法的正确性。

总结

辗转相除法是求解两个整数的最大公约数的一种常见算法。本文中,我们使用C语言实现了辗转相除法,并简要说明了其原理。通过实际的代码演示和运行结果,我们验证了辗转相除法的正确性。希望能够帮助到你理解该算法的实现过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/972672.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue+Element-ui+SpringBoot搭建后端汽车租赁管理系统

最近在做项目&#xff0c;花了一周的时间搭建了一个十分完备的汽车租赁后端管理系统。页面采用纯Vue2Element-ui搭建&#xff0c;后端采用SpringbootMybatis搭建&#xff0c;数据库采用Mysql。包括了登录验证&#xff0c;根据不同权限进入不同界面、数据增删改查、表格分页、表…

iOS实时监控与报警器

在现代信息化社会中&#xff0c;即使我们不在电脑前面也能随时获取到最新的数据。而苹果公司提供的iOS推送通知功能为我们带来了一种全新的方式——通过手机接收实时监控和报警信息。 首先让我们了解一下iOS推送通知。它是一个强大且灵活可定制化程度高、适用于各类应用场景&a…

(二十一)大数据实战——Flume数据采集之复制和多路复用案例实战

前言 本节内容我们完成Flume数据采集的一个多路复用案例&#xff0c;使用三台服务器&#xff0c;一台服务器负责采集本地日志数据&#xff0c;通过使用Replicating ChannelSelector选择器&#xff0c;将采集到的数据分发到另外俩台服务器&#xff0c;一台服务器将数据存储到hd…

vue3 封装千分位分隔符自定义指令

toLocaleString作用&#xff1a;在没有指定区域的基本使用时&#xff0c;返回使用默认的语言环境和默认选项格式化的字符串。可点击进入MDN查看 // 千分位分隔符指令 import { Directive, DirectiveBinding } from vueconst thousandSeparator: Directive {mounted(el: any, …

window系统 bat脚本开启和关闭防火墙

前言 手动去关闭和开启防火墙太麻烦 命令 开始防火墙 netsh advfirewall set allprofiles state on关闭防火墙 netsh advfirewall set allprofiles state off

拦截器和异常处理器

拦截器和异常处理器 拦截器 拦截器(Interceptor)&#xff0c;主要完成请求参数的解析、将页面表单参数赋给值栈中相应属性、执行功能检验、程序异常调试等工作。 准备 创建模块 如下为完整的项目结构 web.xml <web-app xmlns"http://xmlns.jcp.org/xml/ns/javaee&qu…

【Linux】高级IO和多路转接 | select/poll/epoll

多路转接和高级IO 咳咳&#xff0c;写的时候出了点问题&#xff0c;标点符号全乱了&#xff08;批量替换了几次&#xff09;&#xff0c;干脆就把全文的逗号和句号都改成英文的了&#xff08;不然代码块里面的代码都是中文标点就跑不动了&#xff09; 1.高级IO 1.1 五种IO模型…

论文阅读《Nougat:Neural Optical Understanding for Academic Documents》

摘要 科学知识主要存储在书籍和科学期刊中&#xff0c;通常以PDF的形式。然而PDF格式会导致语义信息的损失&#xff0c;特别是对于数学表达式。我们提出了Nougat&#xff0c;这是一种视觉transformer模型&#xff0c;它执行OCR任务&#xff0c;用于将科学文档处理成标记语言&a…

【算法】分治法的基本思想和二分搜索的应用

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多算法分析与设计知识专栏&#xff1a;算法分析&#x1f525; 给大家跳…

手写Mybatis:第9章-细化XML语句构建器,完善静态SQL解析

文章目录 一、目标&#xff1a;XML语句构建器二、设计&#xff1a;XML语句构建器三、实现&#xff1a;XML语句构建器3.0 引入依赖3.1 工程结构3.2 XML语句构建器关系图3.3 I/O资源扫描3.4 SQL源码3.4.1 SQL对象3.4.2 SQL源码接口3.4.3 原始SQL源码实现类3.4.4 静态SQL源码实现类…

Shopify上线新插件,与TikTok Shop销售集成

近日&#xff0c;Shopify推出一款TikTokShop集成插件&#xff0c;简化商家通过TikTokShop销售的流程&#xff0c;此举是对TikTokShop即将关闭半闭环模式的回应。 不久前&#xff0c;TikTok官方宣布将于9月12日关闭半闭环模式&#xff0c;转而专注于TikTokShop全闭环销售&#…

mysql-1:认识mysql

文章目录 数据库概述什么是数据库什么是关系型数据库 MySQL的概述MySQL是什么MySQL发展历程 SQL的概述什么是SQLSQL发展的简要历史&#xff1a;SQL语言分类 数据库概述 什么是数据库 数据库就是[存储数据的仓库]&#xff0c;其本质是一个[文件系统]&#xff0c;数据按照特定的…

系统架构设计师(第二版)学习笔记----系统架构设计师概述

【原文链接】系统架构设计师&#xff08;第二版&#xff09;学习笔记----系统架构设计师概述 文章目录 一、架构设计师的定义、职责和任务1.1 架构设计师的定义1.2 架构设计师的任务 二、架构设计师应具备的专业素质2.1 架构设计师应具备的专业知识2.2 架构设计师的知识结构2.3…

SIEM 中不同类型日志监控及分析

安全信息和事件管理&#xff08;SIEM&#xff09;解决方案通过监控来自网络的不同类型的数据来确保组织网络的健康安全状况&#xff0c;日志数据记录设备上发生的每个活动以及整个网络中的应用程序&#xff0c;若要评估网络的安全状况&#xff0c;SIEM 解决方案必须收集和分析不…

海外企业邮箱注册指南

海外企业邮箱怎么注册&#xff1f;随着全球化进程的加速&#xff0c;海外企业间的沟通和合作也越来越频繁。在这种情况下&#xff0c;拥有一个海外企业邮箱就显得非常必要。本文将向大家介绍如何注册海外企业邮箱。 步骤一&#xff1a;选择邮箱服务提供商 要注册海外企业邮箱&a…

音频修复和增强工具 iZotope RX 10 for mac激活最新

iZotope RX 10是一款音频修复和增强软件&#xff0c;主要特点包括&#xff1a; 声音修复&#xff1a;iZotope RX 10可以去除不良噪音、杂音、吱吱声等&#xff0c;使音频变得更加清晰干净。音频增强&#xff1a;iZotope RX 10支持对音频进行音量调节、均衡器、压缩器、限制器等…

读SQL学习指南(第3版)笔记11_字符串函数和数值函数

1. 尽管SQL标准指定了部分函数&#xff0c;但数据库厂商并没有遵循这些函数规范 2. 字符串 2.1. char 2.1.1. 固定长度、不足部分用空格填充的字符串 2.1.2. MySQL允许的char类型的最大长度为255个字符 2.1.3. Oracle Database允许的最大长度为2,000个字符 2.1.4. SQL Se…

Day54|动态规划part15:392.判断子序列、115.不同的子序列

392.判断子序列 leetcode链接&#xff1a;力扣题目链接 视频链接&#xff1a;动态规划之子序列&#xff0c;为了编辑距离做铺垫 | LeetCode&#xff1a;115.不同的子序列 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些&…

【深度学习实验】数据可视化

目录 一、实验介绍 二、实验环境 三、实验内容 0. 导入库 1. 归一化处理 归一化 实验内容 2. 绘制归一化数据折线图 报错 解决 3. 计算移动平均值SMA 移动平均值 实验内容 4. 绘制移动平均值折线图 5 .同时绘制两图 6. array转换为tensor张量 7. 打印张量 一、…

C/C++源程序到可执行程序exe的全过程(及汇编和反汇编的区别)

1.C/C源程序到可执行程序exe的全过程&#xff08;及汇编和反汇编的区别&#xff09; 一个现代编译器的主要工作流程如下&#xff1a; 源程序&#xff08;source code&#xff09;→预处理器&#xff08;preprocessor&#xff09;→编译器&#xff08;compiler&#xff09;→汇…