最大公约数/最小公倍数(C、Java)

最大公约数/最小公倍数(C、Java)

1、最大公约数

  • 概念: 如果数a能被数b整除,a就叫做b的倍数,b就叫做a的约数。约数和倍数都表示一个整数与另一个整数的关系,不能单独存在。如只能说16是某数的倍数,2是某数的约数,而不能孤立地说16是倍数,2是约数。
  • 常用方法: 最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法、更相减损法。与最大公约数相对应的概念是最小公倍数,a,b的最小公倍数记为[a,b]。
  • Java实现方式一:
public static int gcd(int num1,int num2) {
		int t=num1%num2;
		while(t!=0) {
			num1=num2;
			num2=t;
			t=num1%num2;
		}
		return num2;
	}

方法1:欧几里得算法

  • Java实现方式二:
public static int gcd2(int n1,int n2) {
		int t=Math.min(n1,n2);
		while(true) {
			if(n1%t==0&&n2%t==0) {
				break;
			}else {
				t--;
			}
		}
		return t;
	}

方法2:从n1和n2的最小值找起

  • Java实现方式三:
public static int gcd3(int n1,int n2) {
		while(true) {
			if(n1>n2) {
				n1-=n2;
			}else if(n1<n2) {
				n2-=n1;
			}else {
				return n1;
			}
		}
	}

方法3:辗转相减求得

  • Java实现方式四:
public static int gcd4(int n1,int n2) {
		if(n1%n2==0)
			return n2;
		return gcd4(n2,n1%n2);
	}

方法4:递归

  • C语言实现:
#include <stdio.h>
int main()
{
	int a = 3;
	int b = 12;
	int c = 0;
	while (c=a%b)
	{
		a = b;
		b = c;
	}
	printf("最大公约数 :%d\n", b);
	return 0;
}

2、最小公倍数

概念: 两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。整数a,b的最小公倍数记为[a,b],同样的,a,b,c的最小公倍数记为[a,b,c],多个整数的最小公倍数也有同样的记号。

  • Java实现方式一:
public static int lcm(int a,int b) {
		for(int i=1;i<a*b;i++) {
			if(i%a==0&&i%b==0) {
				return i;
			}
		}
		return a*b;
	}

方法1:暴力法

  • Java实现方式二:
public static int lcm2(int a,int b) {
		return a*b/(gcd(a,b));
	}

方法2:借助最大公约数

  • C语言实现:
#include <stdio.h>
int main()
{
	int a = 24;
	int b = 12;
	int c = 0;
	int d = 0;
	d = a*b;
	while (c = a%b)
	{
		a = b;
		b = c;
	}
	d = d / b;
	printf("最小公倍数:%d\n", d);
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值