Find sum of a number and its maximum prime factor
Last Updated :
08 Jul, 2022
Given an integer N, the task is to find the sum of N and it’s maximum prime factor.
Examples:
Input: 19
Output: 38
Maximum prime factor of 19 is 19.
Hence, 19 + 19 = 38
Input: 8
Output: 10
8 + 2 = 10
Approach: Find the largest prime factor of the number and store it in maxPrimeFact then print the value of N + maxPrimeFact.
Below is the implementation of the above approach:
C++
#include <cmath>
#include <iostream>
using namespace std;
int maxPrimeFactors( int n)
{
int num = n;
int maxPrime = -1;
while (n % 2 == 0) {
maxPrime = 2;
n /= 2;
}
for ( int i = 3; i <= sqrt (n); i += 2) {
while (n % i == 0) {
maxPrime = i;
n = n / i;
}
}
if (n > 2)
maxPrime = n;
int sum = maxPrime + num;
return sum;
}
int main()
{
int n = 19;
cout << maxPrimeFactors(n);
return 0;
}
|
Java
import java.io.*;
class GFG
{
static int maxPrimeFactors( int n)
{
int num = n;
int maxPrime = - 1 ;
while (n % 2 == 0 )
{
maxPrime = 2 ;
n /= 2 ;
}
for ( int i = 3 ; i <= Math.sqrt(n); i += 2 ) {
while (n % i == 0 ) {
maxPrime = i; n = n / i;
}
}
if (n > 2 ) {
maxPrime = n;
}
int sum = maxPrime + num;
return sum;
}
public static void main (String[] args)
{
int n = 19 ;
System.out.println(maxPrimeFactors(n));
}
}
|
Python3
from math import sqrt
def maxPrimeFactors(n):
num = n
maxPrime = - 1 ;
while (n % 2 = = 0 ):
maxPrime = 2
n = n / 2
p = int (sqrt(n) + 1 )
for i in range ( 3 , p, 2 ):
while (n % i = = 0 ):
maxPrime = i
n = n / i
if (n > 2 ):
maxPrime = n
sum = maxPrime + num
return sum
if __name__ = = '__main__' :
n = 19
print (maxPrimeFactors(n))
|
C#
using System;
class GFG
{
static int maxPrimeFactors( int n)
{
int num = n;
int maxPrime = -1;
while (n % 2 == 0)
{
maxPrime = 2;
n /= 2;
}
for ( int i = 3;
i <= Math.Sqrt(n); i += 2)
{
while (n % i == 0)
{
maxPrime = i; n = n / i;
}
}
if (n > 2)
{
maxPrime = n;
}
int sum = maxPrime + num;
return sum;
}
static void Main ()
{
int n = 19;
Console.WriteLine(maxPrimeFactors(n));
}
}
|
PHP
<?php
function maxPrimeFactors( $n )
{
$num = $n ;
$maxPrime = -1;
while ( $n % 2 == 0)
{
$maxPrime = 2;
$n /= 2;
}
for ( $i = 3; $i <= sqrt( $n ); $i += 2)
{
while ( $n % $i == 0)
{
$maxPrime = $i ;
$n = $n / $i ;
}
}
if ( $n > 2)
$maxPrime = $n ;
$sum = $maxPrime + $num ;
return $sum ;
}
$n = 19;
echo maxPrimeFactors( $n );
?>
|
Javascript
<script>
function maxPrimeFactors(n)
{
var num = n;
var maxPrime = -1;
while (n % 2 == 0)
{
maxPrime = 2;
n = parseInt(n/2);
}
for ( var i = 3; i <= parseInt(Math.sqrt(n)); i += 2)
{
while (n % i == 0) {
maxPrime = i;
n = parseInt(n / i);
}
}
if (n > 2) {
maxPrime = n;
}
var sum = maxPrime + num;
return sum;
}
var n = 19;
document.write(maxPrimeFactors(n));
</script>
|
Time Complexity: O(sqrtn*logn)
Auxiliary Space: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...