ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C语言算法 求最大公约数(辗转相除法)

2020-05-03 11:02:01  阅读:348  来源: 互联网

标签:152 C语言 1997 int 615 最大公约数 除法


辗转相除法(欧几里德算法)

假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里德算法,是这样进行的:
1997 / 615 = 3 (余 152)
615 / 152 = 4(余7)
152 / 7 = 21(余5)
7 / 5 = 1 (余2)
5 / 2 = 2 (余1)
2 / 1 = 2 (余0)
至此,最大公约数为1
以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数,所以就得出了 1997 和 615 的最大公约数 1。

#include<stdio.h> 
int fun(int a,int b){
	int r,t;
	if(a<b){//当中a的值小于b的时候,将a的值与b进行交换 
		t=a;
		a=b;
		a=t;
	}
	r = a%b;//当a的值大于b的时候直接求其对应的余数 当余数等于0的时候,直接可以除尽的时候其最大公约数就是b 
	
	//当余数不等于0的时候 ,一次没有除尽
	while(r!=0){
		a=b;//也就是说明b没有被除尽,将b的值赋予a 
		b=r;//然后将余数赋予b   当除不尽的时候其最大公约数为r 
		r=a%b;//当r等于0的时候   结束循环  b被除尽. 
	} 
	return b;//最大公约
}
void main(){
	int num1,num2,a;
	printf("输入 num1 和 num2的值");
	scanf("%d %d",&num1,&num2);
	printf("num1 = %d num2 = %d \n \n",num1,num2);
	a=fun(num1,num2);
	printf("最大公约数为 %d\n\n",a);
} 

标签:152,C语言,1997,int,615,最大公约数,除法
来源: https://blog.csdn.net/qq_44757034/article/details/105887004

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有