问题描述

从键盘输入两个整数,求任意两个正整数的最大公约数(GCD)。

最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法、更相减损法。

问题分析

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

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

算法设计

思路有两种:第一种,采用穷举法按从小到大(初值为1,最大值为两个整数当中较小的数)的顺序将所有满足条件的公约数列出,输出其中最大的一个;第二种,按照从大(两个整数中较小的数)到小(到最小的整数1)的顺序求出第一个能同时整除两个整数的自然数,即为所求。

下面对第二种思路进行详细说明。

两个数的最大公约数有可能是其中的小数,所以在按从大到小顺序找寻最大公约数时,循环变量i的初值从小数n开始依次递减,去寻找第一个能同时整除两整数的自然数,并将其输出。需要注意的是,虽然判定条件是i>0,但在找到第一个满足条件的i值后,循环没必要继续下去,如,25和15,最大公约数是5,对于后面的4、3、2、1没必要再去执行,但此时判定条件仍然成立,要结束循环只能借助break语句。

程序流程图:

下面是完整的代码:

#include

int main()

{

int m, n, temp, i;

printf("输入两个正整数,中间空一格:");

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

if(m

{ /*交换m和n的值*/

temp=m;

m=n;

n=temp;

}

for(i=n; i>0; i--)  /*按照从大到小的顺序寻找满足条件的自然数*/

if(m%i==0 && n%i==0)

{/*输出满足条件的自然数并结束循环*/

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

break;

}

return 0;

}

运行结果:

输入两个正整数,中间空一格:100 150

150 和 100 最大公约数是 : 50

linux求最大公约数视频,C语言求最大公约数代码及解析相关推荐

  1. 真分数c语言,C语言列出真分数序列代码及解析

    原标题:C语言列出真分数序列代码及解析 按递增顺序依次列出所有分母为60,分子小于60的最简分数. 分子.分母只有公因数1的分数叫做最简分数或者说分子和分母是互质数的分数,叫做最简分数,又称既约分数, ...

  2. 判断魔方阵c语言程序设计_C语言实现魔方阵代码及解析

    原标题:C语言实现魔方阵代码及解析 问题描述 编写程序,实现如下表所示的5-魔方阵. 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 1 ...

  3. 用php递归求fibonacci数列,C++_C语言求Fibonacci斐波那契数列通项问题的解法总结,一:递归实现使用 - phpStudy...

    C语言求Fibonacci斐波那契数列通项问题的解法总结 一:递归实现  使用公式f[n]=f[n-1]+f[n-2],依次递归计算,递归结束条件是f[1]=1,f[2]=1. 二:数组实现  空间复 ...

  4. python求sinx近似值_c语言求sinx的近似值 c语言求sinx近似值

    #includevoid main(){ float x,a=0,b,t,n=1,s=1,c=1; printf("请输入x的值:"); scanf("%f", ...

  5. c++求小数的位数_C语言求第二小数

    2020.11.07 C语言分享 ● ● ● #01#前言 C语言案例---求第二小数 求n个整数中第二小的数.注意,约定相同的整数看成一个数.比如,有5个数分别是1,1,3,4,5,那么第二小的数就 ...

  6. c语言用库函数求正弦数,用C语言求正弦值?

    1.C语言中要编写sin函数,实质上要利用sin的泰勒公式,然后根据泰勒公式,将其中的每一项进行分解,最后用循环,累加计算出最终结果. 2.下面用for循环实现sin的算法,程序代码如下: #incl ...

  7. c语言对数组求秩,怎样用C语言求矩阵的秩

    这是一个算法的实现过程.首先需要了解什么是矩阵的秩,它的计算方法是啥.弄清楚算法之后,用C语言实现即可. 在线性代数中,一个矩阵A的列秩是A的线性独立的纵列的极大数目.类似地,行秩是A的线性无关的横行 ...

  8. c语言10个数求立方合并输出,C语言 求出100~999之间的所有“水仙花数”并输出...

    "水仙花数"是指一个三位数,其各位数字的立方和确好等于该数本身,如:153=1+5+3?,则153是一个"水仙花数".在数论中,水仙花数(Narcissisti ...

  9. 蚁群算法求函数最值c语言,蚁群算法代码(求函数最值)

    蚁群算法简单应用 function [F]=F(x1,x2) %目标函数 F=-(x1.^2+2*x2.^2-0.3*cos(3*pi*x1)-0.4*cos(4*pi*x2)+0.7); End f ...

最新文章

  1. 6.1.1 验证注解的使用
  2. Datahwhale第三期集训团队成员
  3. win7 X64 编译ffmpeg
  4. poj 2251 Dungeon Master (三维bfs)
  5. 华为mate20能用鸿蒙吗,华为mate20可以用5g网络吗
  6. 需要写的一些pycoe
  7. 随想录(程序员怎么用英文查资料)
  8. Java编程思想目录
  9. c语言中的正号运算符,C语言 运算符
  10. 西门子PLC与安川变频器Modbus通信
  11. 窃钩者诛,“窃脸”者___?
  12. web ui 套件_复古UI套件
  13. JS入门笔记九:循环精灵图案例
  14. 利用腾讯云函数做蓝奏云解析API
  15. 美国NBC电视台社论 中文版
  16. python爬携程_用python selenium抓取携程信息
  17. C#把数据库表里简体字转化为繁体字
  18. upc组队赛16 GCDLCM 【Pollard_Rho大数质因数分解】
  19. Docker-windows使用教程
  20. 堆栈内存的分析以及作用域的详解

热门文章

  1. 33【源码】数据可视化:基于 Echarts + Python Flask 动态实时大屏 - 制造业生产管理看板
  2. 运用盒子模型划分网页模块--创意图文
  3. c语言中%s的作用,C语言中%c与%s的区别与划分详解
  4. ios 获取本地音乐
  5. 网络实名制争议愈演愈烈是否推未知(转)
  6. 面试官:说说java1.7HashMap头插法导致死循环的问题
  7. linux find用正则表达式
  8. 微信小程序框架(二)-全面详解(学习总结---从入门到深化)
  9. Siamese Multi-Object Tracking
  10. 给自己的网页制作一个网页图标