C语言——两种方法求最大公约数

C语言——求最大公约数

关于怎么求最大公约数,我总结了两种方法!
一种是取余求最大公约数
另一种是相减求最大公约数
下面第一种先介绍一下取余法,代码如下:
这个方法的思路就是对两个数字进行循环求余,只要当余数不为0时就一直进行循环,余数为0时推出循环,输出除数的值,此时除数的值就是最大公约数,下面我会用一个例子来说明一下;
比如有两个数字24和34
m % n = yu
24 % 34 = 24
34 % 24 = 10
24 % 10 = 4
10 % 4 = 2
4 % 2 = 0
注意:写代码时要将yu放在“=”左边,因为“=”左边只能为左值。
注意:我这个代码是在Linux环境下写的,要在C-Free中运行会有乱码,只要将中文换掉即可。

#include <stdio.h>
int main(){
	int m = 0,n = 0;
	scanf("%d %d",&m,&n);
	if(m==0||n==0){
		printf("没有最大公约数!\n");
		return 0;
	}	
	while(m%n!=0){
		int yu = m%n;
		m = n;
		n = yu;
	}
	printf("最大公约数是:%d\n",n);
	return 0;	
}

另一种方法为相减法,代码如下:
这个方法的思路就是对两个数字进行循环相减,只要两个数相减不为0时则一直循环,相减为0时则推出循环,输出被减数的值,此时被减数或者减数都为最大公约数,例子如下:
还是24和34
m - n = res
34 - 24 = 10
24 - 10 = 14
14 - 10 = 4
10 - 4 = 6
6 - 4 = 2
4 - 2 = 2
2 - 2 =0

#include <stdio.h>
int main(){
	int m=0,n=0;
	scanf("%d %d",&m,&n);
	if(m==0 || n==0){
		printf("没有最大公约数!\n");	
	}else{
		int big = m>n?m:n;
		int small = m>n?n:m;
		while(big-small!=0){
			int res = big-small;
			big = res>small?res:small;
			small = res>small?small:res;
		}
		printf("最大公约数为:%d\n",big);		
	}
	return 0;	
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值