两个大数的LCM

给定两个大数字“a”和“b”,使得(10^20<=a,b<=10^300)。找到给定的两个大数字的LCM。 例如:

null
 Input: a = 234516789234023485693020129
        b = 176892058718950472893785940
 Output: 41484157651764614525905399263631111992263435437186260

 Input: a = 36594652830916364940473625749407
        b = 448507083624364748494746353648484939
 Output: 443593541011902763984944550799004089258248037004507648321189937329

解决方案: 在给定的问题中,我们可以看到这个数字非常大,超出了所有可用原始数据类型的限制,因此我们必须在Java中使用BigInteger类的概念。因此,我们将给定的字符串转换为biginteger,然后使用java。数学大整数。gcd(BigInteger val)方法计算大数的gcd,然后我们使用以下公式计算lcm: LCM*HCF=x*y,其中x和y是两个数字

下面是上述想法的实现。

JAVA

// Java Program to find LCM of two large numbers
import java.math.*;
import java.lang.*;
import java.util.*;
public class GFG {
// function to calculate LCM of two large numbers
public static BigInteger lcm(String a, String b)
{
// convert string 'a' and 'b' into BigInteger
BigInteger s = new BigInteger(a);
BigInteger s1 = new BigInteger(b);
// calculate multiplication of two bigintegers
BigInteger mul = s.multiply(s1);
// calculate gcd of two bigintegers
BigInteger gcd = s.gcd(s1);
// calculate lcm using formula: lcm * gcd = x * y
BigInteger lcm = mul.divide(gcd);
return lcm;
}
// Driver Code
public static void main(String[] args)
{
// Input 'a' and 'b' are in the form of strings because
// they can not be handled by integer data type
String a = "36594652830916364940473625749407" ;
String b = "448507083624364748494746353648484939" ;
System.out.print(lcm(a, b));
}
}
// Code contributed by Saurav Jain


Python3

# Python3 program to find LCM of two
# large numbers
import math
# Function to calculate LCM of two
# large numbers
def lcm (a, b):
# Convert string 'a' and 'b'
# into Integer
s = int (a)
s1 = int (b)
# Calculate multiplication of
# both integers
mul = s * s1
# Calculate gcd of two integers
gcd = math.gcd(s, s1)
# Calculate lcm using
# formula: lcm * gcd = x * y
lcm = mul / / gcd
return lcm
# Driver Code
if __name__ = = '__main__' :
# Input 'a' and 'b' are in the
# form of strings
a = "36594652830916364940473625749407"
b = "448507083624364748494746353648484939"
print (lcm(a, b))
# This code is contributed by himanshu77


输出:

443593541011902763984944550799004089258248037004507648321189937329
© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享