博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求两个数的最大公约数(列举法与辗转相除法)
阅读量:6621 次
发布时间:2019-06-25

本文共 1276 字,大约阅读时间需要 4 分钟。

最大公约数定义:把能够整除某一个数的数,叫做这个数的约数。几个数所公有的约数叫这几个数的公约数。公约数中最大的一个叫做这几个数的最大公约数。 例如:27和15,,27 的约数有1,27,3,9;15的约数为:1,15,3,5。而27 和15 的公约数为1,3.则最大公约数为3。

在了解了最大公约数后我们便可以从同时要被两个数整除,且还是最大值可以想到一个比较麻烦的方法。

方法一:列举法

用循环进行列举依次排查,从1开始到它本身(这里的循环结束的表示可以在两个数之间随意选择,只要可以取到它本身就可以),因为我们是从小到大依次排列过来的所以每次只要将可以整除的数字赋值给一个变量就可以,保证变量每次都会更新为最大值。

 

1 #include
2 int main() 3 { 4 int a, b; 5 int j = 0; 6 printf("请输入两个整数:\n"); 7 printf("a="); 8 scanf("%d", &a); 9 printf("b=");10 scanf("%d", &b);11 //这里从1开始依次排查,直到取到它本身为止12 //循环可以保证每次取到的公约数依次增大13 for (int i = 1;i <= b;i++)14 {15 if (a % i == 0 && b % i == 0)16 {17 j = i;//将公约数赋值给变量18 }19 }20 printf("最大公约数为:%d", j);21 22 return 0;23 }

方法二:辗转相除法

先将两个整数a与b进行相除,如果余数为0(a%b==0),则b为两数的最大公约数;如果不等于0,则将b赋值给a,将余数赋值给b,在对a与b进行相除,直到余数为0时终止(a%b==0),则b为最大公约数。

1 #include
2 int main() 3 { 4 //方法二:辗转相除法 5 int a, b, i; 6 printf("请输入两个整数:\n"); 7 printf("a="); 8 scanf("%d", &a); 9 printf("b=");10 scanf("%d", &b);11 i = a % b;12 while(i != 0)13 {14 a = b;15 b = i;16 i = a % b;17 }18 printf("%d",b);19 20 return 0;21 }

 

转载于:https://www.cnblogs.com/cuckoo-/p/10267614.html

你可能感兴趣的文章
word双栏排版,最后一页由于分节符造成最后一页是空白页,删除分节符双栏就变成了单栏...
查看>>
手机web不同屏幕字体大小高度自适应
查看>>
服务器端口及连接及应用程序间的关系
查看>>
Android监听HOME键的最简单的方法
查看>>
Java 数组
查看>>
inotify+rsync实现实时同步
查看>>
C#GUID
查看>>
ASP.NET 5 入门(1) - 建立和开发ASP.NET 5 项目
查看>>
spring+activemq中多个consumer同时处理消息时遇到的性能问题
查看>>
git clone 遇到的坑
查看>>
linux系统/var/log目录下的信息详解
查看>>
Android中利用LinearLayout继承实现ImageButton 转
查看>>
图片处理--边缘高亮
查看>>
Linux计划任务Crontab实例详解教程
查看>>
android之布局
查看>>
自定义服务器控件(处理不同的浏览器)
查看>>
解决IE6-IE7下li上下间距
查看>>
配置级别greenplum 可用空间计算
查看>>
聚集索引更新后会不会马上重新排序
查看>>
幸运大抽奖
查看>>