Дано положительное число N. Задача состоит в том, чтобы найти максимальную сумму различных чисел, такую, что НОК всех этих чисел равняется N.
Примеры:
Ввод: 2
Выход: 3
Вы можете иметь различные числа:
всего 1 и 2, а их сумма равна 3.
Ввод: 5
Выход: 6
Рекомендуется: сначала решите эту проблему на «ПРАКТИКЕ», прежде чем переходить к решению.
As the LCM of all the numbers is N. So all the numbers must be the divisors of N and all the numbers are distinct so answer must be the sum of all the divisors of N. To find all the divisors efficiently refer to article https://www.geeksforgeeks.org/find-all-divisors-of-a-natural-number-set-2/
C++
#include<bits/stdc++.h>
using namespace std;
int maxSumLCM( int n)
{
int max_sum = 0;
for ( int i=1; i*i<=n; i++)
{
if (n%i == 0)
{
max_sum += i;
if (n/i != i)
max_sum += (n/i);
}
}
return max_sum;
}
int main()
{
int n = 2;
cout << MaxSumLCM(n) << endl;
return 0;
}
|
Java
class MaxSum
{
static int maxSumLCM( int n)
{
int max_sum = 0 ;
for ( int i= 1 ; i*i<=n; i++)
{
if (n%i == 0 )
{
max_sum += i;
if (n/i != i)
max_sum += (n/i);
}
}
return max_sum;
}
public static void main (String[] args)
{
int n = 2 ;
System.out.println(maxSumLCM(n));
}
}
|
Python3
def maxSumLCM(n) :
max_sum = 0
i = 1
while (i * i< = n ):
if (n % i = = 0 ) :
max_sum = max_sum + i
if (n / / i ! = i) :
max_sum = max_sum + (n / / i)
i = i + 1
return max_sum
n = 2
print (maxSumLCM(n))
|
C#
using System;
class MaxSum
{
static int maxSumLCM( int n)
{
int max_sum = 0;
for ( int i = 1; i * i <= n; i++)
{
if (n % i == 0)
{
max_sum += i;
if (n / i != i)
max_sum += (n / i);
}
}
return max_sum;
}
public static void Main (String[] args)
{
int n = 2;
Console.Write(maxSumLCM(n));
}
}
|
PHP
<?php
function maxSumLCM( $n )
{
$max_sum = 0;
for ( $i = 1;
$i * $i <= $n ; $i ++)
{
if ( $n % $i == 0)
{
$max_sum += $i ;
if ( $n / $i != $i )
$max_sum += ( $n / $i );
}
}
return $max_sum ;
}
$n = 2;
echo MaxSumLCM( $n );
?>
|
Javascript
<script>
function maxSumLCM(n)
{
let max_sum = 0;
for (let i=1; i*i<=n; i++)
{
if (n%i == 0)
{
max_sum += i;
if (n/i != i)
max_sum += (n/i);
}
}
return max_sum;
}
let n = 2;
document.write(maxSumLCM(n) + "<br>" );
</script>
|
Выход:
3
Эта статья предоставлена Ayush Jha . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью на сайте deposit.geeksforgeeks.org или отправить свою статью по электронной почте: grant@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.
Вниманию читателя! Не прекращайте учиться сейчас. Получите все важные математические концепции для соревновательного программирования с курсом Essential Maths for CP по доступной для студентов цене. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .