首页 置换 选车 估价 问答 生活 经销商 车管所 汽车资讯 汽车销量 车牌查询 今日油价 天气预报
您的位置: 首页 > 生活 > 其他 > C语言求最大公约数代码(C语言求最大公约数)
C语言求最大公约数代码(C语言求最大公约数)
更新时间:2024-07-06 13:49:19
问题描述

求任意两个正整数的最大公约数(GCD)。

问题分析

如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。

根据约数的定义可知,某个数的所有约数必不大于这个数本身,几个自然数的最大公约数必不大于其中任何一个数。要求任意两个正整数的最大公约数即求出一个不大于其中两者中的任何一个,但又能同时整除两个整数的最大自然数。

算法设计

思路有两种:

第一种:采用穷举法按从小到大(初值为1,最大值为两个整数当中较小的数)的顺序将所有满足条件的公约数列出,输出其中最大的一个;

第二种,按照从大(两个整数中较小的数)到小(到最小的整数1)的顺序求出第一个能同时整除两个整数的自然数,即为所求。

我们将对第二种思路进行详细说明。

两个数的最大公约数有可能是其中的小数,所以在按从大到小顺序找寻最大公约数时,循环变量i的初值从小数n开始依次递减,去寻找第一个能同时整除两整数的自然数,并将其输出。

需要注意的是,虽然判定条件是i>0,但在找到第一个满足条件的i值后,循环没必要继续下去;

如,25和15,最大公约数是5,对于后面的4、3、2、1没必要再去执行,但此时判定条件仍然成立,要结束循环只能借助break语句。

程序流程图:

C语言求最大公约数代码(C语言求最大公约数)1

下面是完整的代码:

#include<stdio.h> int main() { int m, n, temp, i; printf("Input m & n:"); scanf("%d%d", &m, &n); if(m<n) /*比较大小,使得m中存储大数,n中存储小数*/ { /*交换m和n的值*/ temp=m; m=n; n=temp; } for(i=n; i>0; i--) /*按照从大到小的顺序寻找满足条件的自然数*/ if(m%i==0 && n%i==0) {/*输出满足条件的自然数并结束循环*/ printf("The GCD of %d and %d is: %d\n", m, n, i); break; } return 0; }

C语言求最大公约数代码(C语言求最大公约数)2

运行结果:

Input m & n:100 125

The GCD of 125 and 100 is: 25

C语言求最大公约数代码(C语言求最大公约数)3

不管你是转行也好,初学也罢,进阶也可,如果你想学编程,进阶程序员~

【值得关注】我~

全栈程序员正在等你加入~

,
相关推荐RECOMMEND
耳朵大疱性鼓膜炎多久才能好(小心大疱性鼓膜炎)
大疱性鼓膜炎在现代生活中较为常见,这个疾病多发于儿童和三十岁以下的人群,患有了大疱性鼓膜炎往往会给患者的健康以及生活质量带来一定的影响,该疾病最主要的症状就是耳部疼痛。如果有一天耳部突然发生疼痛并且迅...
丽水所有抖音(丽水乐乐你出名了)
来源:丽水日报-丽水网丽水这位爸爸的“才艺”在抖音上火了还上了人民日报微信网友评论们更是亮了让孩子瞬间成为人群中最靓的仔最近相信不少朋友都刷到过这个视频视频中的小朋友背着的被子是标准的行军被打包方法—...
有什么偏方治白癜风吗(你不知道的白癜风偏方)
白癜风属于顽固性的皮肤病,引发白癜风的因素有很多,治疗起来很困难,而且容易反复发作,那么白癜风该如何治疗呢?下面就为大家带来治疗白癜风的小偏方,有需要的朋友快来了解一下吧!1、无花果叶由于无花果叶子中...
yonex 球拍选择(yonex将推出新系列球拍)
嘘!“路边社”消息来了。yonex将要上市一个全新系列的球拍——Astrox,简称AX系列。小虎君仿佛听到了钱包要变瘦的声音。烧拍党,准备好剁手了吗?yonex官方的保密功夫做的太好了,目前为止没有太...
农产品助力乡村振兴意义(助力湖北乡村振兴)
中国网武汉12月18日讯聚才聚智,助力乡村振兴。12月18日,湖北省乡村人才振兴跨年思享会暨湖北大学绿乡萌校友奖学金颁奖活动在湖北大学举行,各界代表近50人围绕乡村人才培育等话题,共同探讨湖北乡村振兴...
ps怎么弄智能图层(你不知道的智能对象图层)
通常我们把一张图片直接拖进已经打开的PS文件中的时候(或者在图层上鼠标右键,转换为智能对象),在图层面板会显示一个类似下图的图层缩略图,鼠标停留在上面会提示是智能对象缩略图。智能对象图层当我们对它进行...