连续多个数的最小公倍数

package com;

//为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致。
//但也并非纯粹的偶然:60是个优秀的数字,它的因子比较多。
//事实上,它是1至6的每个数字的倍数。即1,2,3,4,5,6都是可以除尽60。
//
//我们希望寻找到能除尽1至n的的每个数字的最小整数。
//
//不要小看这个数字,它可能十分大,比如n=100, 则该数为:
//69720375229712477164533808935312303556800

//思路:
/* 1、由于涉及的数会很大 , 使用大整数类型 BigInteger
* 2、用数组保存范围内的所有的值 1-n;
* 3、求所有数的最小公倍数;
* 4、两两数进行比较取每次结果的公约数;
* 5、将所有的值进行相乘;
*
*
* */

import java.math.BigInteger;
public class My1
{
// 求能除尽1~n 每个数字的最小整数
public static BigInteger f(int n)
{
int[] x = new int[n+1]; // 因为要包含 n 这个数字
//赋值
for(int i=1; i<=n; i++){
x[i] = i; //对数组元素进行赋值 1 - n
}
for(int i=2; i<n; i++)
{
for(int j=i+1; j<=n; j++)
{
//System.out.println(x[j]+"%"+x[i]+"="+x[j]%x[i]);
// 解析:相邻两个数进行比较:例如:3 和 2 如果:3 能被2整除,则 取而者得商替换 3 的值
if(x[j] % x[i]==0){
x[j]=x[j]/x[i];
}
}
//System.out.println("的值为:"+x[i]);
}

BigInteger m = BigInteger.ONE;//接收所有数的 积
for(int i=2; i<=n; i++)
{
m = m.multiply(BigInteger.valueOf(x[i]));
}
return m;
}

public static void main(String[] args)
{
System.out.println(f(3));
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是两个函数的 Python 实现: ```python def gcd(a, b): """ 求解 a 和 b 的最大公约数 """ while b != 0: a, b = b, a % b return a def lcm(a, b): """ 求解 a 和 b 的最小公倍数 """ return a * b // gcd(a, b) ``` 其中,`gcd` 函数采用了辗转相除法求解最大公约数,`lcm` 函数则通过最大公约数求解最小公倍数。 ### 回答2: 最大公约数(GCD)是指两个或多个整数共有的约数中最大的一个数。而最小公倍数(LCM)是指两个或多个整数共有的倍数中最小的一个数。 下面分别定义两个函数求解最大公约数和最小公倍数: 1. 求最大公约数(GCD)的函数: 输入:两个整数a和b 输出:整数a和b的最大公约数 定义函数gcd(a, b): 若a能整除b,返回b 否则,返回gcd(b, a % b) 若a和b是非负整数,则可以使用欧几里得算法来递归地求解最大公约数。该算法的基本思想是,用较大数除以较小数得到余数,将较小数和余数之间的最大公约数作为新的较小数,再将新的较小数和余数之间的最大公约数作为新的较小数,如此重复直到余数为0,此时较小数即为最大公约数。 2. 求最小公倍数(LCM)的函数: 输入:两个整数a和b 输出:整数a和b的最小公倍数 定义函数lcm(a, b): gcd = gcd(a, b) 返回 a * b / gcd 最小公倍数可以通过最大公约数来求解。通过公式 a * b = gcd * lcm,可以得到 lcm = a * b / gcd。 以上两个函数分别可以用来求解最大公约数和最小公倍数。 ### 回答3: 最大公约数(GCD)是指两个或多个整数中最大的能够整除所有这些数的正整数。求最大公约数的一种常见方法是欧几里得算法。 欧几里得算法的基本思想是通过连续地用较小数除以较大数的余数来替换较大数,直到余数为0,此时较小的数就是最大公约数。根据这一思想,我们可以定义一个函数gcd来求解最大公约数: 函数名称:gcd 输入:两个正整数a和b 输出:a和b的最大公约数 步骤: 1. 如果b等于0,返回a(递归边界条件)。 2. 否则,返回调用gcd函数计算b和a除以b的余数的最大公约数。 最小公倍数(LCM)是指两个或多个整数的公共倍数中最小的那个整数。求最小公倍数的一种常见方法是使用最大公约数。 根据最大公约数和最小公倍数的关系,我们可以定义一个函数lcm来求解最小公倍数: 函数名称:lcm 输入:两个正整数a和b 输出:a和b的最小公倍数 步骤: 1. 首先,计算a和b的最大公约数gcd。 2. 然后,使用公式lcm = a * b / gcd计算最小公倍数。 3. 返回最小公倍数。 通过这两个函数,我们可以方便地求解给定两个整数的最大公约数和最小公倍数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值