java Bigm_1-100最小公倍数问题(Java BigInteger版本) | 学步园

<1>问题:指定一个数字n,求解1-n这n个数字的最小公倍数

<2>代码:

package Java;

import java.math.BigInteger;

import java.util.Scanner;

public class gbs              //指定一个数字n,求解出1,2,3,...n这n个数字的最小公倍数

{

/*

* 求解m和n的最小公倍数

*/

public static BigInteger gongBeishu(BigInteger m,BigInteger n)

{

return (m.multiply(n)).divide(m.gcd(n));   //   (m*n)/(m和n的最大公约数),即m和n的最小公倍数

}

/*

* 递归求解1到n的最小公倍数

*/

public static BigInteger gongBeishuSubN(BigInteger n)

{

if(n.equals(new BigInteger("2")))

return new BigInteger("2");

return gongBeishu(gongBeishuSubN(n.subtract(BigInteger.ONE)),n);

}

/*

* 主方法

*/

public static void main(String args[])

{

Scanner cin = new Scanner(System.in);

int m;

while((m = cin.nextInt()) >= 2)

System.out.println(gongBeishuSubN(new BigInteger(new Integer(m).toString())) + "\n");

}

}

<3>运行结果截图:

1366081603_3138.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要计算两个大整数的最小公倍数,我们需要先分别计算它们的所有质因数的最高次幂,然后将这些最高次幂相乘即可得到它们的最小公倍数。 举个例子,我们要计算 12 和 18 的最小公倍数。首先将它们分解质因数: 12 = 2^2 × 3 18 = 2 × 3^2 然后分别找出它们各自的所有质因数的最高次幂: 2^2 × 3^1 2^1 × 3^2 最后将这些最高次幂相乘得到它们的最小公倍数: 2^2 × 3^2 = 36 所以,12 和 18 的最小公倍数为 36。 ### 回答2: BigInteger类是Java提供的一个用来处理大整数的工具类,可以用来进行大整数的计算。要计算两个大整数的最小公倍数,可以按照以下步骤进行: 1. 首先,使用BigInteger的gcd方法(最大公约数)来计算两个大整数的最大公约数。假设两个大整数分别为num1和num2,则可以使用`BigInteger gcd = num1.gcd(num2);`来计算它们的最大公约数。 2. 然后,使用BigInteger的multiply方法(乘法)来计算最小公倍数。由于最小公倍数等于两个数的乘积除以它们的最大公约数,因此可以使用`BigInteger lcm = num1.multiply(num2).divide(gcd);`来计算最小公倍数。 3. 最后,使用lcm.toString()方法将最小公倍数转换为字符串进行输出。 例如,假设我们要计算两个大整数1000000000000000000000000000000000000000和2000000000000000000000000000000000000000的最小公倍数。可以使用以下代码进行计算: ```java import java.math.BigInteger; public class Main { public static void main(String[] args) { BigInteger num1 = new BigInteger("1000000000000000000000000000000000000000"); BigInteger num2 = new BigInteger("2000000000000000000000000000000000000000"); BigInteger gcd = num1.gcd(num2); BigInteger lcm = num1.multiply(num2).divide(gcd); System.out.println("最小公倍数为:" + lcm.toString()); } } ``` 运行以上代码,输出结果为最小公倍数为:2000000000000000000000000000000000000000。 ### 回答3: BigIntegerJava中提供的一个用于进行大整数计算的类。在使用BigInteger进行最小公倍数的计算时,可以采用以下的思路: 首先,我们需要找到两个正整数的最大公约数,然后利用最大公约数来最小公倍数。 可以使用BigInteger类中的gcd()方法来解最大公约数。gcd()方法用于返回当前BigInteger对象与参数BigInteger对象的最大公约数。 接下来,我们可以得到最小公倍数的公式,即两个数的乘积除以它们的最大公约数。可以使用BigInteger类中的multiply()方法和divide()方法来进行计算。 下面是一个使用BigInteger计算最小公倍数的示例代码: ```java import java.math.BigInteger; public class LeastCommonMultiple { public static void main(String[] args) { BigInteger num1 = new BigInteger("1234567890"); BigInteger num2 = new BigInteger("987654321"); // 计算最大公约数 BigInteger gcd = num1.gcd(num2); // 计算最小公倍数 BigInteger lcm = num1.multiply(num2).divide(gcd); System.out.println("最小公倍数为:" + lcm); } } ``` 在上述示例中,我们使用了两个BigInteger对象分别表示需要计算最小公倍数的两个大整数。通过调用gcd()方法得最大公约数,然后通过multiply()方法和divide()方法计算得到最小公倍数。最后,使用System.out.println()方法将结果输出。 这样,我们就使用BigInteger类成功计算出了两个大整数的最小公倍数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值