C语言中求最大公约数的算法(三种)
利用指针把三个数从大到小输出
最大公约数:指某几个整数共有约数中最大的一个
方法一:相减法 也叫更相减损法
思路:
1、如果a > b a = a - b;
2、如果b > a b = b - a;
3、假如a = b,则 a或 b是最大公约数;
4、如果a != b;则继续从一开始执行;
5、也就是说循环的判断条件为a != b,直到a = b时,循环结束。
举例说明:
a = 28 b = 21
a>b
则 a = a - b = 28 - 21 = 7
b = 21
b>a
则 b = b-a = 21 - 7 = 14
a = 7
b>a
则 b = b - a = 14 - 7 = 7
a = 7
此时 a = b =7
循环结束
代码展示
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>int main()
{int a = 0;int b = 0;printf("输入两个数求最大公约数:");scanf("%d%d",&a,&b);while(a!=b){if(a>b)a = a - b;if(a<b)b = b - a;}printf("%d\n",a);return 0;
}
结果展示
方法二
思路:
1.选出a,b中最小的一个数字放到c中
2.分别用a,b对c求余数,即看是否能被c整除
3.直到a,b同时都能被c整除
4.如不能整除,c– (c的值减一) 继续从2开始执行
5.也就是说该循环的判断条件为 a,b能否同时被c整除,只要有一个数不能被c整除,循环继续执行
举例说明:
a = 9 b = 4
将其中最小的数字赋予c
c = 4
a%c = 1 ,b%c = 0 a,b不能同时被c整除 循环继续
c– ,c = 3
a%c = 0 ,b%c = 1 a,b不能同时被c整除 循环继续
c– ,c = 2
a%c = 1 ,b%c = 0 a,b不能同时被c整除 循环继续
c– ,c = 1
a%c = 0 ,b%c = 0 a,b同时被c整除 循环结束 c是a和b的最大公约数
代码展示
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>int main()
{int a = 0;int b = 0;int c = 0;while(1){ printf("输入两个数求最大公约数:");scanf("%d%d",&a,&b);c = (a>b)?b:a; //三目运算符 while((a%c != 0) || (b%c != 0)){c--;}printf("最大公约数为: %d \n",c);}return 0;
}
结果展示
方法三:辗转相除法
思路:
1.将两整数求余 a%b = c
2.如果c = 0;则b为最大公约数
3.如果c != 0,则 a = b;b = c;继续从1开始执行
4.也就是说该循环的是否继续的判断条件就是c是否为0
举例说明:
a = 21 b = 28
c = a%b = 21%28 = 21, 则c = 21 此时c不为0
执行 a = b , b = c , a = 28 ,b = 21
c = a%b = 28%21 = 7 ,则c = 7 此时c不为0
执行 a = b , b = c , a = 21 , b = 7
c = a%b = 21%47 = 0 ,则c = 0 循环结束
代码展示:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int a = 0;int b = 0;int c = 0;while(1){ printf("输入两个数求最大公约数: ");scanf("%d%d",&a,&b);c = a%b;while(c){a = b;b = c;c = a%b;}printf("最大公约数为: %d\n",b);}return 0;
}
结果展示
C语言中求最大公约数的算法(三种)相关推荐
- C语言中比较两数的大小——三种方法
定义a = 10,b = 20,以下为三种比较方式: 一.if-else法 #include<stdio.h> int main(){int a = 10;int b = 20;int r ...
- 用c语言中的函数来求公约数,C语言中求最大公约数的函数
满意答案 fzqtDv 2013.11.04 采纳率:42% 等级:12 已帮助:6067人 int g(int m,int n) { int k,p,t; if(m for(k=t; ;k-- ...
- 在c语言中基本数据类型主要有哪三种,C语言第三讲,基本数据类型
C语言第三讲,基本数据类型 一丶基本数据类型讲解 在C语言当中,有四种基本数据类型 分别是: 整形 浮点型 指针 聚合类型(数组和结构) 整型家族包括: 字符 短整型 整形 长整型 ** 都分为有符号 ...
- c语言怎样求最大公约数,c语言求最大公约数
求差判定法. 如果两个数相差不大,可以用大数减去小数,所得的差与小数的最大公约数就是原来两个数的最大公约数.例如:求78和60的最大公约数.78-60=18,18和60的最大公约数是6,所以78和60 ...
- python中求最小公约数,python求最大公约数和最小公倍数的简单方法
python求最大公约数和最小公倍数的简单方法 python怎么求最大公约数和最小公倍数 一.求最大公约数 用辗转相除法求最大公约数的算法如下: 两个正整数a和b(a>b),它们的最大公约数等于 ...
- C语言求35 45的最大公约数,C语言怎么求最大公约数和最小公倍数
#3 段梦超2009-12-20 21:31 输入两个正整数m和n, 求其最大公约数和最小公倍数. <1> 用辗转相除法求最大公约数 算法描述: m对n求余为a, 若a不等于0 则 m 最 ...
- c语言如何判断最小公倍数,c语言如何求最大公约数和最小公倍数?
推荐教程:<C视频教程> c语言如何求最大公约数和最小公倍数? c语言求最大公约数和最小公倍数的方法: 求最大公约数算法: 有两整数a和b: ① a%b得余数c ② 若c=0,则b即为两数 ...
- 四种求最大公约数的算法 C / C++
文章目录 前言 一.辗转相除法 1. 算法简介 2. 算法描述 3. 代码及复杂度 二.穷举法(枚举法) 1. 算法简介 2. 算法描述 3. 代码及复杂度 三.更相减损法 1. 算法简介 2. 算法 ...
- C语言Prims求最小生成树MST的算法(附完整源码)
C语言Prims求最小生成树MST的算法 C语言Prims求最小生成树MST的算法完整源码(定义,实现,main函数测试) C语言Prims求最小生成树MST的算法完整源码(定义,实现,main函数测 ...
最新文章
- Python 程序员常见错误
- (C#)AJAX post方式传值
- Ubuntu 设置Android adb 环境变量
- UIWebView中字体自动放大问题的探究
- java android统计图_Android统计图表之柱状图(条形图)
- rgb 灰色_金属+RGB+无线,我要买爆这款海盗船VIRTUOSO鉴赏家游戏耳机
- 博客园北京俱乐部第二次技术活动(2009/4/4)总结
- 深度学习试题_深度学习理论类常见面试题(二)
- com app.html,downloadApp.html
- eclipse(window平台)快捷键总结
- word论文格式调整
- 三部曲打造无路由器破解闪讯WiFi共享 经好几个同学验证
- Oracle openv目录,nub备份安装目录/openv由来
- 动态规划之LCS算法
- 计算机学报范文,计算机学报论文
- sql 中英文格式的时间转数字格式
- django批量修改table_django restframework 多对多的批量修改,基于逻辑删
- 关于使用Cytoscape软件合并多个网络图
- 启用计算机无线网络连接,无线网络连接未启用DHCP是怎么回事?如何解决?
- 计算机一级考试操作题未来教育,2019年计算机一级考试MS Office操作试题002
热门文章
- mysql 生成随机数 —— 数字、字符串、手机号、日期、姓名、一段中文汉字
- 勒索病毒SARA,请勿用于非法用途。
- [论文笔记] [2008] [ICML] Extracting and Composing Robust Features with Denoising Autoencoders
- python语法基础-cPickle.dump使用
- 3344avd_AVD生根
- 西门子1513CPU冗余组态
- 【性能测试】轻量级压测工具Hey
- python中str类型和object类型_pandas str和object类型之间的区别
- sublime text 光标移动行末/行首
- python判断密码是否正确_python密码判断是否符合要求的方法