这是一个C语言 while 循环示例:求正整数 m 和 n 的最大公约数。

问题分析

输入:两个正整数。

输出:一个正整数(最大公约数)。

最大公约数(gcd)是指几个数共有的因数之中最大的一个数,比如 8 和 12 的最大公约数是 4,一般记作 gcd(8,12)=4。

求两个正整数的最大公约数可以使用辗转相除法。辗转相除法是公元前 300 年左右的希腊数学家欧几里得在他的著作《几何原本》中提出的,利用这个方法可以较快地求出两个自然数的最大公约数。

辗转相除法求两个正整数的最大公约数的具体步骤:用较大的数除以较小的数,如果余数不为 0,则将余数和较小的数(除数)构成一对新数,继续用其中较大的数除以较小的数,这样反复进行上面的除法,直到大数被小数除尽(余数为 0),这时较小的数就是原来两个数的最大公约数(见图 1)。

图 1:辗转相除法求两个正整数的最大公约数

算法描述

代码清单 2:求正整数 m 和 n 的最大公约数

#include

#include

int main( )

{

int m,n,r;

printf("输入两个正整数(空格分隔):\n");

scanf("%d %d",&m,&n);

r = m % n; //r取m除以n的余数

while(r != 0) //辗转相除

{

m = n; //小数给m

n = r; //余数给n

r = m % n; //r再次取m除以n的余数

}

printf("最大公约数是%d\n",n);

system("pause");

return 0;

}

运行结果:

输入两个正整数(空格分隔):

56 72

最大公约数是8

知识点总结

辗转相除法求最大公约数:始终用较大的数除以较小的数,直至除尽。

C语言用for循环求最大公约数,C语言循环结构 -C语言求最大公约数相关推荐

  1. c语言gcb最小公倍数,C编序编程题目:输入两个正整数m和n,求其最大公约数和最小公倍...,C语言编程,输入两个正整数M和N(MN),计算M和N...

    问题标题 C编序编程题目:输入两个正整数m和n,求其最大公约数和最小公倍...,C语言编程,输入两个正整数M和N(M 2019-3-27来自ip:15.121.164.188的网友咨询 浏览量:228 ...

  2. C语言编程>第一周 ⑧ 输入两个正整数m和n,求其最大公约数和最小公倍数。

    例题:输入两个正整数m和n,求其最大公约数和最小公倍数. 代码如下: /*程序分析:利用辗除法.*/ #include"stdio.h" main() {int a,b,num1, ...

  3. 用c语言求最大公约数的流程图,如何用c语言求最大公约数和最小公倍数

    a=g_cd(m,n); if (m>n) //最小公倍数=较大的数*(较小的数/最大公约数) { b=n; b/=a; return m*b; } else { b=m; b/=a; retu ...

  4. c语言辗转相除法素数,C|模数、素数,辗转相除法的证明及求最大公约数和最小公倍数...

    1 模数 "模"是指一个计量系统的计数范围.如时钟等.计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个"模".例如: 时钟的计量范围是0-11,模 ...

  5. c语言输入若干数输出最小值循环结构,C语言上机150道题

    C语言上机150道题及参考答案 1.某一门课程考试之后,需要统计考生(10人)的平均成绩,并找出其中的最高分和最低分. 2.从键盘输入两个正整数,输出这两个整数的商,要求商的小数点后保留5位.例如输入 ...

  6. C语言详解系列——goto语句的讲解和循环语句的简单练习题

    文章目录 goto语句 一些简单的练习题 打印三的倍数 从大到小输入 打印素数 最大公约数 打印闰年 goto语句 顾名思义goto语句就是去到任何我们想去的语句,当我们写了很长的一段代码时,我们想要 ...

  7. PTA 基础编程题目集 7-16 求符合给定条件的整数集 C语言

    PTA 基础编程题目集 7-16 求符合给定条件的整数集 C语言 给定不超过6的正整数A,考虑从A开始的连续4个数字.请输出所有由它们组成的无重复数字的3位数. 输入格式: 输入在一行中给出A. 输出 ...

  8. c语言循环设计思想结构,C语言程序设计_05循环结构程序设计讲述.pptx

    C语言程序设计_05循环结构程序设计讲述 第5章 循环结构程序设计5.1 while循环结构5.2 do-while循环结构5.3 for循环结构5.4 与循环有关的控制语句5.5 3种循环语句的比较 ...

  9. c语言第六章条件型循环结构,C语言课件(第六章 循环结构)

    C语言课件 第六章 循环结构 在许多复杂的问题中,常常需要做大量的类似的计算处理,这些类似的相同的处理过程存在重复性过程,即在某种条件成立的情况下需要处理相同的操作时,就要使用循环结构来完成. 类似于 ...

最新文章

  1. 快速构建深度学习图像数据集,微软Bing和Google哪个更好用?
  2. Python学习全家桶,Python初学者十一个热门问题
  3. linux c 中 当前函数名 文件名 可变参 不定参 宏使用
  4. 2010 求后序遍历
  5. 一天学完spark的Scala基础语法教程十、类和对象(idea版本)
  6. pku acm 2140 Herd Sums http://acm.pku.edu.cn/JudgeOnline/problem?id=2140
  7. 枚举enum、NS_ENUM 、NS_OPTIONS
  8. 微型计算机主机箱内的所有部件均由,计算机应用基础模拟题
  9. [No000089]String的(补空位)左对齐,(补空位)右对齐
  10. 【印刷字符识别】基于matlab模板匹配英文字母识别【含Matlab源码 808期】
  11. 工控安全| 西门子S7-300攻击分析
  12. SubSonic使用技巧
  13. python PIL Image 图像处理基本操作
  14. 全国高级项目经理人数知多少?(数据统计截止2013年6月22日)
  15. B.系数 (Lucas定理)
  16. 关于Java中的引用的用法
  17. 如何用计算机测试交易系统,一种自动售票机交易功能的测试系统和方法与流程...
  18. 癫狂的dom——利用css3让dom动起来
  19. python基础论文_Python基础 - 文章分类 - rwwh - 博客园
  20. 浅谈傅里叶——8. 一维iDFT的实现

热门文章

  1. c语言中怎么用scanf给二维数组赋值,关于VC++6.0无法用scanf()输入浮点值赋给二维数组的问题...
  2. java输出中写html标签,java 输出html标签
  3. 一个老程序员的一些职场经验分享
  4. Windows编程 从消息窗口到基本窗口 游戏循环窗口框架的简单实现
  5. 数字化技术成为门店的重要推手?
  6. matlab有限元法求解转子固有频率,多支承转子系统辛空间传递矩阵法及应用
  7. linux图形界面bind dns,在linux上使用BIND建立DNS服务器
  8. vi 撤销上一步操作
  9. 新版华为P30,这5个新功能C位出道,3988值得拥有
  10. Linux---基础部分