我是靠谱客的博主 犹豫乐曲,最近开发中收集的这篇文章主要介绍【C语言】:输入两个正整数并找出它们的最大公约数减一比较法(当然这是我自己命名的hhh~),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

*********************************************************************************

导言:本人也是一位小白,有错误的地方请各位大佬指出,我便修改,这是我的第一篇博客写得不好请见谅。

下面介绍两种方法->

*********************************************************************************

    • 减一比较法(当然这是我自己命名的hhh~)

代码如下:

此方法的原理:将输入的两个数中较小的一个数给到一个中间变量用作for循环,以此来自减,在减的过程中会把这个数拿给输入时的两个数进行取余运算,若输入时的数均取余得到0就说明此时的中间变量的值就是输入的两个数的最大公约数。(因为较小的那个数自减的话比较大的那个数提高了效率,最大公约数顾名思义是输入两个正整数均所能整除的最大数)

当然这样的代码很是繁琐,看起来一大堆,所以为大家准备了第二种方法。

第二种方法也是大家上学时学过的“欧几里得算法”也就是辗转相除法,这属于算法的一种了。

先解释一下原理吧:

  • 辗转相除法原理先输入a和b进行取余(a%b,不管先后顺序),若为0则说明a和b的最大公约数为b;若不为0则继续把b的值赋值给a,把前面取余得到的数赋值给b,然后继续取余判断a和b(a%b,不管先后顺序)是否等于0,若为0则说明最大公约数就是b的值,若不为0则继续把b的值赋值给a,把前面取余的数赋值给b,然后继续判断a和b取余(a%b,不管先后顺序)看是否等于0,如此循环。直到a%b==0了就说明b为a与b之间的最大公约数。

前面说到”减一法“的代码比较繁琐而这里却更繁琐,这里时为了大家更好的理解,下面会有优化的代码的,请各位看官稍安勿躁哦!

代码如下:

  • 注意:辗转相除法不需要把更大的数放前面,因为该方法具备“自动”把大的数换到前面去。

既然说到了可以不论顺序,所以我们吧这算法优化一下

这里就很简洁啦,相信大家也理解得差不多了吧!!!

我把代码运行输出一下吧!

最后希望大家指出我的问题!

谢谢各位看官的光临,点点赞吧!!!

最后

以上就是犹豫乐曲为你收集整理的【C语言】:输入两个正整数并找出它们的最大公约数减一比较法(当然这是我自己命名的hhh~)的全部内容,希望文章能够帮你解决【C语言】:输入两个正整数并找出它们的最大公约数减一比较法(当然这是我自己命名的hhh~)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部