当前位置: 首页 > article >正文

C语言练习之求最大公约数

目录

前言

一、三种方法的基本原理和求解思路

1、辗转相除法

2、更相减损法

3、短除法

二、源代码以及运行截图

1、辗转相除法

2、更相减损法

3、短除法

总结


09dd06a8e5f14956a0bc9c2a9ae8685e.gif

前言

求两个数的最大公约数是一个很基础的数学问题,今天我来和大家分享用C语言求两个数的最大公约数的三种方法。

一、三种方法的基本原理和求解思路

1、辗转相除法

原理:

取两个数中最大的数做除数,较小的数做被除数,用最大的数除较小数,如果余数为0,则较小数为这两个数的最大公约数;

如果余数不为0,用较小数除上一步计算出的余数,直到余数为0,则这两个数的最大公约数为上一步的余数。

思路:

先判断两个数的大小,大的数赋值给n,小的数赋值给m。
用n%m如果结果为0则m的值为最大公约数
如果结果不为0,则将小的数赋值给n,将余数赋值给m
循环运算直到n%m==0成立

2、更相减损法

原理:

取两个数中的较大数做被减数,较小数做减数,用被减数减去减数,如果结果为0,则减数就是这两个数的最大公约数;
如果结果不为0,则将原减数作为新的被减数,上次的差作为新的减数,再进行运算,直到结果为0,则最大公约数为最终的减数。

思路:

先判断两个数的大小,将较大数赋值给n,将较小值赋值给m;
判断n-m==0是否成立
如果成立,则最大公约数为m;
如果不成立,则将n-m的值赋值给m,将原本的m的值赋值给n再进行运算和判断;
循环不成立时的过程直到成立,则最大公约数为m。

3、短除法

原理:

找出两个数的所有公约数,最大的那个就是最大公约数

思路:

先找出较小数,找约数时的限制条件就是不能超过较小数的值,所有公约数中最大的就是最大公约数

二、源代码以及运行截图

为了方便大家的交流和学习,我将程序的源代码放置在下方。

1、辗转相除法

int main()
{int n = 0;int m = 0;int	temp = 0;printf("请输入两个操作数:>");scanf("%d %d", &n, &m);if (n < m){temp = n;n = m;m = temp;}while (1){if (n % m == 0){printf("这两个数的最大公约数为%d\n", m);break;}else{temp = m;m = n % m;n = temp;}}return 0;
}

 运行截图:

7e855aa6391a4ce1a034f6f30448210b.png

2、更相减损法

int main()
{int n = 0;int m = 0;int temp = 0;printf("请输入两个操作数:>\n");scanf("%d %d", &n, &m);if (n < m){temp = n;n = m;m = temp;}while (1){if (n - m == 0){printf("这两个数的最大公约数为%d\n", m);break;}else{temp = m;m = n - m;n = m;}}return 0;
}

  运行截图:

ae816650b7b846bf976300fcf84eed2b.png

3、短除法

int main()
{int n = 0;int m = 0;int temp = 0;int i = 1;int t = 0;printf("请输入两个操作数:>\n");scanf("%d %d", &n, &m);if (n > m){temp = n;n = m;m = temp;}for (i = 1; i <= n; i++){if (n % i == 0 && m % i == 0){t = i;}}printf("这两个数的最大公约数为%d\n", t);return 0;
}

  运行截图:

758a51ad39684f7d807da11882c00bed.png

cfb81d56792441b3a8b3fcdc2966cee5.jpeg

总结

  以上就是今天要讲的内容,本文简单的介绍了用C语言求两个数的最大公约数的三种方法的思路,还进一步用展示了代码的运行结果验证了作者的思路。

本文的作者也只是一个正在学习C语言等编程知识的萌新,若这篇文章中有哪些不正确的内容,请在评论区向作者指出(也可以私信作者),欢迎大佬们指点,也欢迎其他正在学习C语言的萌新和作者进行交流。

最后,如果本篇文章对你有所启发的话,也希望可以支持支持作者,后续作者也会定期更新学习记录。谢谢大家!

fbdbd1e3044941eba46b4f8f3d736342.gif

 

 

http://www.lryc.cn/news/2418712.html

相关文章:

  • [0CTF 2016]piapiapia总结(PHP序列化长度变化导致尾部字符逃逸)
  • 深交所互动平台_2020年世界投资者周丨深交所严密监控可转债交易 提醒投资者警惕交易风险...
  • 第7章 小波基及其构造
  • android:stretchcolumns=0,1,2,3,安卓表格布局android:collapseColumns,android:shrinkColumns和stretchColumn...
  • C# MessageBox最全的详解
  • error C2100: illegal indirection
  • 基于python的网站设计,python网站开发教程
  • jsp实现简易购物车
  • 各职业抗火装出处
  • 【河北工业大学城市学院毕业论文】基于Java的连连看游戏的设计与实现
  • 如何打开和编程NH文件
  • DropDownList绑定的两种方法
  • QQ空间欢迎动画代码大全
  • PDP协议简介
  • Windows 7 RTM“新版本”7600.16399”释疑
  • Linux介绍与操作系统安装
  • MATLAB6.5安装后MATLAB 出现 license manager error 103错误
  • Bcrypt.NET开源项目使用手册
  • MDK5(KEIL5)设置输出bin文件
  • 免费打造个人博客系统
  • APE文件直接刻录CD
  • 8 款浏览器兼容性测试工具介绍
  • MPEG-4标准定义的音频压缩格式AAC详解
  • CocosCreator 源码cc.moveBy详解
  • xiao
  • 小黄的日记,爱情本该如此
  • 分享97个社区论坛PHP源码,总有一款适合你
  • java仿qq空间音乐播放_使用JS改造的简单网页音乐播放器,仿QQ空间样式
  • CSS - 实现横向滚动(横向滚动布局)
  • 分享12款我常用的开源免费工具