首页 > 其他分享 >用C语言,两个数的最大公约数

用C语言,两个数的最大公约数

时间:2023-10-25 23:32:55浏览次数:36  
标签:m% 24 两个 16 int C语言 最大公约数 余数

今天我们来了解下如何用C语言程序代码,求两个数的最大公约数。

比较经典的算法就是使用辗转相除法,

代码如下:

用C语言,两个数的最大公约数_最大公约数

程序运行结果如下:

用C语言,两个数的最大公约数_辗转相除法_02

#include<stdio.h>

int main()

{

int m = 0;              //创建整型(int)的变量m,n来接收从键盘输入的值

int n = 0;

int r = 0;           //创建整型(int)的变量r来接收m%n的余数

scanf("%d%d",&m,&n);  //从键盘输入两个整型变量,并把它们存入m,n中

while (r = m % n)     //进行while循环判断n是否可以被整除是不是最小公约数来决定是否进入下一次循环

{

 m = n;            //进入循环体表明n不是最小公约数,于是我们把n的值赋值给m

 n = r;            //把m%n的余数r的值赋值给n,接着来到循环的条件判断,直至循环体的条件值为0跳出整个循环

}

printf("最大公约数的值为:%d",n);     //此刻n的值就是两个数的最大公约数,调用打印函数printf(),打印出最后的结果

return 0;

}

上述就是两个数用C语言求最大公约数的代码,我已经做好了注释,当然还有别的逻辑写出不同的代码,达到相同的效果,答案结果不唯一。

重点就是辗转相除法的运算公式:m%n=r       当r的值不为0时,

---------------------------------m=n              把n的值赋值给m

---------------------------------n=r              把余数r的值赋值给n

--------------------------------m%n=r         再次判断r的值是否为0

-------------------------------不断的重复上述操作直至余数r的值为0,此时n的值就是两个数的最大公约数。

补充知识点:不用判断m与n的值谁大谁小,谁做被除数,谁做除数,

举个简单的例子:m=16,n=24 ,先假设r的值为0,r=0

根据上述的公式我们可以得出如下过程:m%n=r  ->r=16  

                                                           m=n     ->m=24    

                                                           n=r       ->n=16

进入下一次循环判断接着执行m%n=r,此时m=24,n=16

这样的结果与我们一开始m=24,n=16并无任何区别。

举一反三:最小公倍数=m*n/最大公约数




标签:m%,24,两个,16,int,C语言,最大公约数,余数
From: https://blog.51cto.com/u_16263256/8026280

相关文章

  • c语言代码练习37
    问:在一个杨氏矩阵中查找某个数#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intAyue(intarr[3][3],intk,introw,intcol){intx=0;inty=col-1;while(x<row&&y>=0){if(arr[x][y]>k)......
  • [C语言]整数在内存中的存储
    1、......
  • c语言条件操作符的使用
    条件操作符--exp1?exp2:exp3exp1为真,执行exp2exp1为假,执行exp3取最大值intmain(){ inta=10; intb=20; intmax=0; max=(a>b?a:b); //if(a>b) // max=a; //else // max=b; printf("max=%d\n",max); return0;}......
  • C语言接口与实现: 创建可重用软件的技术 pdf电子版
    C语言接口与实现:创建可重用软件的技术pdf电子版作者: DavidR.Hanson原作名: CInterfacesandImplementations:TechniquesforCreatingReusableSoftware出版年: 2011-9ISBN: 9787115260314连接提取码:cnkx一度有点觉得是一本说数据结构的书,但其实不是(不是所有的例子......
  • Java 求两个数的最大公约数和最小公倍数(理解原理 > 背诵)
    解题需知原理,背诵来的知识只能支撑一时。为什么反复执行a%b,即可得到最大公约数?(设定前提是a>b)其中的数学原理就是:a和b的最大公约数完全等同于 b和a%b的最大公约数,证明在这里:辗转相除法求解最大公约数和最小公倍数的数学原理-知乎求得最大公约数d以后,比方说:a=x*......
  • 学习c语言的心得
    培养良好的编程习惯:C语言是一门底层语言,需要严谨的编码和规范的命名,特别是对于变量、函数和数据类型的命名,要清晰明了,易于理解和维护。同时,编写注释也是非常重要的,能够帮助自己和他人更好地理解代码逻辑。多实践多动手:学习C语言最好的办法就是多动手写代码,通过实践来巩固所学的知......
  • bilibili B站:[C语言进阶课]SDL库基础使用教程
    视频摘自:https://www.bilibili.com/video/BV14F411676X笔记摘自:https://gitee.com/yanmu_ym/cpp......
  • 合并两个有序数组(JAVA)
    题外话在我个人的思路视角里,遇到这种排序问题总是会在脑子里产生一些画面感。让我将这些问题奔着一种奇妙的思路而去,也就是在我脑子里很简答,但难以在代码上复现,我觉得从本我的角度讲我也许天生不适合当一个高级程序员hhhh,但!我命由我不由天!题解题目给你两个按非递减顺序排列......
  • 3种方法,用Java找出两个List中的重复元素
    本文分享自华为云社区《如何用Java找出两个List中的重复元素,读这一篇就够了》,作者:努力的阿飞。在Java编程中,我们经常需要找出两个列表(List)中的重复元素。在本文中,我们将探讨三种方法来实现这一目标。方法一:使用HashSetJava中的HashSet是一个不允许有重复元素的集合。我们可以......
  • 分享我对C语言的分支和循环语句的理解
    ㈠我们都知道c语言的语句分为五类⒈表达式语句2.函数调用语句3.控制语句4.复合语句5.空语句而我们分享的分支和循环语句就属于控制语句在此之前我们先简单的介绍一下****控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句......