辗转相除法求最大公因数-C语言

news2024/10/6 6:43:56

  辗转相除法,又名欧几里德算法,是求最大公约数的一种方法。以除数和余数反复做除法运算,最终当余数为0时,取当前算式除数为最大公约数。

例1:求2015和15的最大公因数。
2015 = 15 * 134 + 5
15 = 5 * 3 + 0
因此,最大公因数为:5,即:(2015,15)=5。

例2:求1987和654的最大公因数。
1987 = 654 * 3 + 25
654 = 25 * 26 + 4
25 = 4 * 6 + 1
4 = 1 * 4 + 0
因此,最大公因数为:1,即:(1987,654)=1,则1987与654互素。

#include <stdio.h>
#include <stdlib.h>
int home()
{
    int X, Y, Z,r;//第一个数,第二个数,商,余数 
    printf("请依次输入两个正整数:");
    scanf("%d %d", &X, &Y);
    if (X < Y)//先调整大小,使X为两数中较大者,Y为较小者
    {
        int t = X;
        X = Y;
        Y = t;
    }
    r = X % Y;//求得余数
    //while(r != 0)
    while(1)
    {
    	//printf("%d\n",r);
    	Z = X / Y;//商 
    	printf("%d = %d  * %d + %d\n",X,Y,Z,r);
    	if (r == 0)
    		break;
        X = Y;   
        Y = r;           //不断调整相除的值
        r = X % Y;
        if(r == 0)
        {
        	Z = X / Y;//商 
        	printf("%d = %d  * %d + %d\n",X,Y,Z,r);
			break;
		} 
    }//当r不为0,退出循环,得到Y为最大公约数
    printf("最大公因数为:%d\n", Y);//打印最大公约数
}

int main()
{
	while(1)
	{
		home();
	}
	system("pause");
	return 0;
}

例3:设a= 46480, b = 39423,求整数s,t ,使得sa+tb = (a, b)。

则有

因此,整数s =-22703,t =26767满足sa + tb=(a,b)。

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

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

相关文章

亚马逊云科技 Build On - 咖啡厅Demo学习stepfunction serverless应用

荣幸参与和csdn和aws联合举办的buildon实验活动&#xff0c;主要目的还是学习stepfucntion的使用&#xff0c;这个服务能够集成大量aws service感觉可以出现很多有趣的用法。官方给出的文档已经非常详细了&#xff0c;这里只是对一些比较难理解的点进行了记录和解释&#xff0c…

restricted isometry property 稀疏 (CSDN_0002_20220908)

目录 1. 稀疏问题的引出 2. RIP 说明&#xff1a; 1. 由于参考多篇文献&#xff0c;所以本文的符号与原文略有不同。 2. 由于原文公式较多&#xff0c;所以本文采用了截图的形式&#xff0c;如需要电子版文档&#xff0c;可私信或留言。 1. 稀疏问题的引出 2. RIP 关于1-…

MySQL存储过程高级SQL语句总结

MySQL高级SQL语句&#xff08;存储过程&#xff09; 一、存储过程的概述 1.1 什么是存储过程 存储过程是一组为了完成特定功能的SQL语句集合。 存储过程在使用过程中是将常用或者复杂的工作预先使用SQL语句写好并用一个指定的名称存储起来&#xff0c;这个过程经编译和优化后…

Quarkus构建一个原生可执行文件

先决条件 大概15分钟 编辑器 安装GraalVM&#xff0c;并正确配置 Apache Maven 3.8.1 可以工作的容器 (Docker或者Podman) 一个 C语言工作开发环境 Quarkus应用程序代码 支持在C语言中进行原生编译 拥有一个C语言工作开发者环境意味着什么&#xff1f; 在Linux上&#xf…

华为手机恢复出厂设置后如何恢复数据

当您恢复出厂设置时&#xff0c;手机上存储的所有数据都会被清空。这是因为恢复出厂设置基本上是您从头开始设置手机的一种方式。 众所周知&#xff0c;重置手机会清除手机上的现有数据。如果这种强制删除让你丢失了重要数据&#xff0c;那么恢复出厂设置后数据还能恢复吗&…

企企通:如何利用数字化之道,赋能汽车行业供应链创新?

汽车是国民经济的支柱性企业&#xff0c;产业链长&#xff0c;涉及面广、带动性强&#xff0c;国际化程度高&#xff0c;在全球主要经济大国的产业体系中一直占据着重要地位。 我国汽车行业通过几十年的高速发展之后&#xff0c;从量变到质变&#xff0c;逐渐向低速增长的模式开…

把TeamTalk(即时通讯项目)中的线程池连接池拆出来单独测试。

研究过Teamtalk的伙伴会发现它的线程池和连接池与很多文件有关联&#xff0c; 这篇文章主要写&#xff0c;把它的线程池连接池拆出来需要用到哪些文件。 其实我本来只想测试它的连接池的&#xff0c;但发现连接池里套的有线程池&#xff0c;于是就一起拆出来了。 整个工程的树…

基于SpringBoot的社区小型图书管理系统的设计与实现

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;Java全栈软件工程师一枚&#xff0c;来自浙江宁波&#xff0c;负责开发管理公司OA项目&#xff0c;专注软件前后端开发&#xff08;Vue、SpringBoot和微信小程序&#xff09;、系统定制、远程技术指导。CSDN学院、蓝桥云…

有效操作:Ubuntu上已经安装最新node但是node -v返回的版本号确实错的;ubuntu第一次启动vue项目报npm版本错误

** 如已经安装过最新版的node话可直接跳到操作6&#xff1a; 1.查看node版本&#xff0c;没安装的请先安装&#xff1b; node -v 如果安装成功的话会返回版本号&#xff1a; 2.如果nodejs包出错需要重新安装的话&#xff0c;删除不干净会有可能出现问题&#xff0c;下面就介…

应用出海活跃,开发教程

移动应用行业在国内显现出用户增量放缓的趋势&#xff0c;多种类型的应用渗透率也渐趋饱和。随着政策支持力度的加大&#xff0c;越来越多移动应用走向了海外市场&#xff0c;拓宽用户群。 根据艾瑞咨询在《2022年移动应用出海趋势洞察白皮书》中指出&#xff0c;游戏类占出海…

开源项目-CRM客户关系管理系统

哈喽&#xff0c;大家好&#xff0c;今天给大家带来一个开源系统-CRM客户关系管理系统 主要功能包括客户管理&#xff0c;客户流失&#xff0c;销售机会&#xff0c;客户关怀等模块 系统开发环境以及版本 操作系统&#xff1a; Windows_7集成开发工具&#xff1a; Eclipse EE_…

Zabbix技术分享——snmp异常排查指南

大家好&#xff0c;我是乐乐。在IT运维中&#xff0c;难免会碰上设备snmp不通的情况&#xff0c;那么&#xff0c;当问题出现的时候&#xff0c;运维工程师该如何快速找到问题所在呢&#xff1f;下面让我们一起来看看吧&#xff01; 1&#xff0e;IP配置检查 首先检查zabbix监…

蓝牙模块芯片型号有哪些?国产还是进口?核心指标有哪些

目录 一、蓝牙模块的简介 先看看百度百科对“蓝牙模块”的定义蓝牙模块&#xff0c;是一种集成蓝牙功能的PCBA板&#xff0c;用于短距离无线通讯&#xff0c;按功能分为蓝牙数据模块和蓝牙语音模块。蓝牙模块是指集成蓝牙功能的芯片基本电路集合&#xff0c;用于无线网络通讯&…

UTONMOS链游将为GameFi游戏玩家带来更多的可能

2022年&#xff0c;全球新型冠状病毒疫情尚未彻底消弭&#xff0c;尽管少数国家的隔离措施和防疫规定已开始逐渐放宽&#xff0c;我国也已在疫情防控上估到彻底放开&#xff0c;但人们的生活却远未恢复“常态”。 近3年来&#xff0c;世界各国实施的防疫隔离和封城措施&#x…

Hive+Spark离线数仓工业项目实战--数仓设计及数据采集(2)

MR的Uber模式 目标&#xff1a;了解MR的Uber模式的配置及应用 实施 - Spark为什么要比MR要快 - MR慢 - 只有Map和Reduce阶段&#xff0c;每个阶段的结果都必须写入磁盘 - 如果要实现Map1 -> Map2 -> Reduce1 -> Reduce2 - Mapreduce1&#xff1a;Map…

完全可移植c2000控制器工程模板创建

完全可移植c2000控制器工程模板创建前言步骤创建工程库函数支撑文件拷贝寄存器支撑文件拷贝参考博文及资料前言 迄今为止只学过TI的两款c2000控制器TMS320F280049C和28335&#xff0c;并且所有代码编写都是通过写寄存器来实现的。相较于直接使用TI编写好的库函数&#xff0c;写…

Node.js--》Node环境及nvm版本管理安装及使用

目录 初识Node.js Node.js环境安装 nvm的安装 Node.js环境执行JS代码 初识Node.js Node.js是一个开源、跨平台的 JavaScript 运行时环境。其中文的官方网址为&#xff1a;Node.js官方网址 注意&#xff1a;浏览器是JavaScript的前端运行环境&#xff1b;Node.js是JavaScri…

OpManager 实时网络监控

网络是全球企业背后的基础。它在为您的员工提供行政服务以及为各大洲的客户提供服务方面发挥着关键作用。网络可帮助您将信息保存在一个集中位置 - 需要和限制所有其他入站请求的人员可以访问。那么&#xff0c;您如何提供持续的一流最终用户体验并维护快速发展的网络呢&#x…

JS面试题--ES6知识大全

ES6知识 字面量增强的写法的三种写法 ES6中对 对象字面量 进行了增强&#xff0c;称之为 Enhanced object literals&#xff08;增强对象字面量&#xff09;。 字面量的增强主要包括下面几部分&#xff1a; 属性的简写&#xff1a;Property Shorthand方法的简写&#xff1a…

测开工具:二次开发junit接口自动化框架

一&#xff1a;背景 源码地址&#xff1a;GitHub - 18713341733/AutoApi Java 接口自动化框架&#xff0c;一般就是junit与testng。这里我们讲一下junit接口自动化框架的二次开发。 1.1 我们实现了哪些功能 1、自定义了一些注解&#xff0c;用来管理case。包括case的描述、…