3.C_Demo_最大公约数、最小公倍数
创始人
2024-11-11 19:39:34

辗转相除法求出最大公约数思路:

假设两个数字a和b,求两个数字相除的余数c=a%b,如果余数为0,则b为最大公约数。如果b不为零,a=b,b=c,继续循环计算

最小公倍数思路:

两个数的最小公倍数数等于两个数的乘积除以两个数的最大公约数。即:x,y的最小公倍数 min(公倍数)=x*y÷max(公约数)

代码接口说明如下:

1、unsigned int GreatestCommonDivisor(unsigned int a,unsigned int b);

功能:求a,b最大公约数

参数a,b:传入的两个数值,不能全为0

返回值:0代表错误,正常返回最大公约数

2、unsigned int LeastCommonMultiple(unsigned int a,unsigned int b);

功能:求a,b最小公倍数

参数a,b:传入的两个数值,两个数都不能为0

返回值:0代表错误,正常返回最小公倍数

具体代码实现如下:

#include   /* 最大公约数 */ /* 返回最大公约数,返回0代表错误 */ unsigned int GreatestCommonDivisor(unsigned int a,unsigned int b){ 	 	unsigned int c; 	 	if( a == 0 && b != 0 ){ 		return b;  	}else if( a != 0 && b == 0 ){ 		return a; 	}else if( a == 0 && b == 0 ){ 		printf("err:both input data are '0'\n"); 		return 0; 	}else{ 		while(1){ 			c = a % b; 			if(c == 0){ 				return b; 			}else{ 				a=b; 				b=c; 			}	 		}		 	} 	 }  /* 最小公倍数 */ /* 返回最小公倍数,返回0代表错误 */ unsigned int LeastCommonMultiple(unsigned int a,unsigned int b){  	if( a == 0 || b == 0){ 		printf("err:input data have '0'\n"); 		return 0; 	}else{ 		return (a * b / GreatestCommonDivisor(a,b)); 	}  } int main(){ 	 	 	printf("GCD:%d\n",GreatestCommonDivisor(20,30)); 	printf("LCM:%d\n",LeastCommonMultiple(30,20));  	return 0; } 

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...