【C语言】求解最大公约数方法总结

目录

一、干货

二、一些碎碎念


一、干货

方法一:循环法

 #include <stdio.h>
 int main()
 {
     int m=30,n=20;
     while(n!=0)
     {
         int tmp=m%n;
         m=n;
         n=tmp;
     }
     printf("%d",m);
     return 0;
 }

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5a6J6IuSXw==,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

方法二:递归法【if-else语句】

 #include <stdio.h>
 int gcd(int a,int b);
 int main()
 {
     int m=30,n=20;
     int ret=gcd(m,n);
     printf("%d",ret);
     return 0;
 }
 int gcd(int a,int b)
 {
     if(b==0)
         return a;
     else
         return gcd(b,a%b);
 }

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5a6J6IuSXw==,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

方法三:递归简化版【三目运算符】

 #include <stdio.h>
 #include <stdio.h>
 int gcd(int a,int b);
 int main()
 {
     int m=30,n=20;
     int ret=gcd(m,n);
     printf("%d",ret);
     return 0;
 }
 int gcd(int a,int b)
 {
     return b==0?a:gcd(b,a%b);
 }

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5a6J6IuSXw==,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

二、一些碎碎念

已经不记得,这是第几次去看欧几里得/辗转相除法的原理了。总是看了理解了,题做出来了,没有回顾复习,再做又忘又去看题解。对自己无语了。

咱就是说,再不长心,神仙来了,也拦不住你重蹈覆辙呀。

5d587858d532923f81c22c6749278f79.png

 

今天恰好是一个契机吧【两个作业都只是涉及了最大公约数的求解,最基本的,都不会写】帮我认清自己现在学习中的一些问题。

现做出以下调整:每月的30/31进行阶段性总结和回顾。方式:口述基本原理,并用代码表示自己的想法。

目前的坑:①四舍五入

                  ②最大公约数 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值