Droll Numbers
Last Updated :
24 Nov, 2021
Given a number N, the task is to check if N is an Droll Number or not. If N is an Droll Number then print “Yes” else print “No”.
A droll Number is a number such that the sum of even prime divisors of N is equaled to the sum of odd prime divisors of N.
Examples:
Input: N = 6272
Output: Yes
Explanation:
6272 = 2*2*2*2*2*2*2*7*7 is droll
since 2+2+2+2+2+2+2 = 14 = 7+7.
Input: N = 10
Output: No
Approach: The idea is to find the sum of even prime factors and the sum of odd prime factors and check if they are equal or not. If they are equal then N is an Droll Number and print “Yes” for it, else print “No”.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
bool isDroll( int n)
{
if (n == 1)
return false ;
int sum_even = 0;
int sum_odd = 0;
while (n % 2 == 0) {
sum_even += 2;
n = n / 2;
}
for ( int i = 3; i <= sqrt (n); i = i + 2) {
while (n % i == 0) {
sum_odd += i;
n = n / i;
}
}
if (n > 2)
sum_odd += n;
return sum_even == sum_odd;
}
Driver Code int main()
{
int N = 72;
if (isDroll(N))
cout << "Yes" ;
else
cout << "No" ;
return 0;
}
|
Java
class GFG{
static boolean isDroll( int n)
{
if (n == 1 )
return false ;
int sum_even = 0 ;
int sum_odd = 0 ;
while (n % 2 == 0 )
{
sum_even += 2 ;
n = n / 2 ;
}
for ( int i = 3 ; i <= Math.sqrt(n);
i = i + 2 )
{
while (n % i == 0 )
{
sum_odd += i;
n = n / i;
}
}
if (n > 2 )
sum_odd += n;
return sum_even == sum_odd;
}
public static void main(String[] args)
{
int n = 72 ;
if (isDroll(n))
System.out.println( "Yes" );
else
System.out.println( "No" );
}
}
|
Python3
import math;
def isDroll(n):
if (n = = 1 ):
return False ;
sum_even = 0 ;
sum_odd = 0 ;
while (n % 2 = = 0 ):
sum_even + = 2 ;
n = n / / 2 ;
for i in range ( 3 , int (math.sqrt(n)) + 1 , 2 ):
while (n % i = = 0 ):
sum_odd + = i;
n = n / / i;
if (n > 2 ):
sum_odd + = n;
return sum_even = = sum_odd;
N = 72 ;
if (isDroll(N)):
print ( "Yes" );
else :
print ( "No" );
|
C#
using System;
class GFG{
static bool isDroll( int n)
{
if (n == 1)
return false ;
int sum_even = 0;
int sum_odd = 0;
while (n % 2 == 0)
{
sum_even += 2;
n = n / 2;
}
for ( int i = 3; i <= Math.Sqrt(n);
i = i + 2)
{
while (n % i == 0)
{
sum_odd += i;
n = n / i;
}
}
if (n > 2)
sum_odd += n;
return sum_even == sum_odd;
}
public static void Main()
{
int n = 72;
if (isDroll(n))
Console.Write( "Yes" );
else
Console.Write( "No" );
}
}
|
Javascript
<script>
function isDroll(n)
{
if (n == 1)
return false ;
let sum_even = 0;
let sum_odd = 0;
while (n % 2 == 0)
{
sum_even += 2;
n = n / 2;
}
for (let i = 3;
i <= Math.sqrt(n);
i = i + 2)
{
while (n % i == 0)
{
sum_odd += i;
n = n / i;
}
}
if (n > 2)
sum_odd += n;
return sum_even == sum_odd;
}
let n = 72;
if (isDroll(n))
document.write( "Yes" );
else
document.write( "No" );
</script>
|
Time Complexity: O(sqrt(N))
Share your thoughts in the comments
Please Login to comment...