用c语言求出最大公约数,求最大公约数(c语言)

本文介绍了两种求解两个整数最大公约数的方法:逐步递减法和辗转相减法(尼考曼彻斯法),并提供了完整的C语言实现代码。

问题描述

求出两个数的最大公约数。

算法设计

法1:

两个数的最大公约数有可能是其中较小的小数,所以在按从大到小顺序找寻最大公约数时,循环变量i的初值从较小的数开始依次递减,去寻找第一个能同时整除两整数的自然数,并将其输出。需要注意的是,虽然判定条件是i>0,但在找到第一个满足条件的i值后,循环没必要继续下去,要结束循环只能借助break语句。

完整代码如下:

1 #include

2

3 int main(void){

4 int a,b,temp,i;

5 printf("Input a & b:");

6 scanf("%d%d", &a, &b);

7 if(a

8 temp = a;

9 a = b;

10 b = temp;

11 }

12 for(i=b;i>0;i--){  //循环变量i的初值从小数b开始依次递减

13 if(a%i==0 && b%i==0){

14 printf("最大公约数为%d",i);

15 break;

16 }

17 }

18 }

法2:

辗转相减法:即尼考曼彻斯法。辗转相减法即通过对两数的不断减法运算。(大数减小数:例如9与6,if(9>6)a=3  else b=6-3=3。故他们的公约数为3)

完整代码如下:

#include

int main(){

int a,b,i;

printf("Please input a&b:");

scanf("%d%d",&a,&b);

while(a!=b){

if(a>b)

a=a-b;

else

b=b-a;

}

printf("最大公约数为%d\n",a);

return 0;

}

来源:https://www.cnblogs.com/xiayuan521/p/13176179.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值