给定一个数字N(> = 3)。任务是找到三个整数(<= N),以使这三个整数的LCM最大。
例子:
Input: N = 3
Output: 1 2 3
Input: N = 5
Output: 3 4 5
方法:由于任务是使LCM最大化,因此,如果所有三个数字都没有任何公因子,则LCM将是这三个数字的乘积,并且该乘积将是最大的。
- If n is odd then the answer will be n, n-1, n-2.
- If n is even,
- If gcd of n and n-3 is 1 then answer will be n, n-1, n-3.
- Otherwise, n-1, n-2, n-3 will be required answer.
下面是上述方法的实现:
C++
// CPP Program to find three integers
// less than N whose LCM is maximum
#include
using namespace std;
// function to find three integers
// less than N whose LCM is maximum
void MaxLCM(int n)
{
// if n is odd
if (n % 2 != 0)
cout << n << " " << (n - 1) << " " << (n - 2);
// if n is even and n, n-3 gcd is 1
else if (__gcd(n, (n - 3)) == 1)
cout << n << " " << (n - 1) << " " << (n - 3);
else
cout << (n - 1) << " " << (n - 2) << " " << (n - 3);
}
// Driver code
int main()
{
int n = 12;
// function call
MaxLCM(n);
return 0;
}
Java
// Java Program to find three integers
// less than N whose LCM is maximum
import java.io.*;
class GFG {
// Recursive function to return gcd of a and b
static int __gcd(int a, int b)
{
// Everything divides 0
if (a == 0)
return b;
if (b == 0)
return a;
// base case
if (a == b)
return a;
// a is greater
if (a > b)
return __gcd(a-b, b);
return __gcd(a, b-a);
}
// function to find three integers
// less than N whose LCM is maximum
static void MaxLCM(int n)
{
// if n is odd
if (n % 2 != 0)
System.out.print(n + " " + (n - 1) + " " + (n - 2));
// if n is even and n, n-3 gcd is 1
else if (__gcd(n, (n - 3)) == 1)
System.out.print( n + " " +(n - 1)+ " " + (n - 3));
else
System.out.print((n - 1) + " " + (n - 2) + " " + (n - 3));
}
// Driver code
public static void main (String[] args) {
int n = 12;
// function call
MaxLCM(n);
}
}
// This code is contributed by anuj_67..
Python3
# Python 3 Program to find three integers
# less than N whose LCM is maximum
from math import gcd
# function to find three integers
# less than N whose LCM is maximum
def MaxLCM(n) :
# if n is odd
if (n % 2 != 0) :
print(n, (n - 1), (n - 2))
# if n is even and n, n-3 gcd is 1
elif (gcd(n, (n - 3)) == 1) :
print(n, (n - 1), (n - 3))
else :
print((n - 1), (n - 2), (n - 3))
# Driver Code
if __name__ == "__main__" :
n = 12
# function call
MaxLCM(n)
# This code is contributed by Ryuga
C#
// C# Program to find three integers
// less than N whose LCM is maximum
using System;
class GFG {
// Recursive function to return gcd of a and b
static int __gcd(int a, int b)
{
// Everything divides 0
if (a == 0)
return b;
if (b == 0)
return a;
// base case
if (a == b)
return a;
// a is greater
if (a > b)
return __gcd(a-b, b);
return __gcd(a, b-a);
}
// function to find three integers
// less than N whose LCM is maximum
static void MaxLCM(int n)
{
// if n is odd
if (n % 2 != 0)
Console.Write(n + " " + (n - 1) + " " + (n - 2));
// if n is even and n, n-3 gcd is 1
else if (__gcd(n, (n - 3)) == 1)
Console.Write( n + " " +(n - 1)+ " " + (n - 3));
else
Console.Write((n - 1) + " " + (n - 2) + " " + (n - 3));
}
// Driver code
public static void Main () {
int n = 12;
// function call
MaxLCM(n);
}
}
// This code is contributed by anuj_67..
PHP
$b)
return __gcd($a - $b, $b);
return __gcd($a, $b - $a);
}
// function to find three integers
// less than N whose LCM is maximum
function MaxLCM($n)
{
// if n is odd
if ($n % 2 != 0)
echo $n , " " , ($n - 1) ,
" " , ($n - 2);
// if n is even and n, n-3 gcd is 1
else if (__gcd($n, ($n - 3)) == 1)
echo $n , " " , ($n - 1),
" " , ($n - 3);
else
echo ($n - 1) , " " , ($n - 2),
" " , ($n - 3);
}
// Driver code
$n = 12;
// function call
MaxLCM($n);
// This code is contributed by Sachin
?>
Javascript
输出:
11 10 9