Divide a number into two unequal even parts
Last Updated :
20 Jul, 2023
Given a positive integer N. The task is to decide whether the integer can be divided into two unequal positive even parts or not.
Examples:
Input: N = 8
Output: YES
Explanation: 8 can be divided into two different even parts i.e. 2 and 6.
Input: N = 5
Output: NO
Explanation: 5 can not be divided into two even parts in any way.
Input: N = 4
Output: NO
Explanation: 4 can be divided into two even parts, 2 and 2. Since the numbers are equal, the output is NO.
Prerequisites: Knowledge of if-else conditional statements.
Brute Force Approach:
We iterate over all possible values of i from 1 to N-1, and check if i and (N-i) are both even and unequal. If we find such a pair of values, we return true, indicating that N can be divided into two unequal even parts. If we don’t find such a pair of values, we return false, indicating that N cannot be divided into two unequal even parts.
Implementation of the above approach:
C++
#include<iostream>
using namespace std;
bool evenParts( int N)
{
for ( int i = 1; i < N; i++) {
if (i % 2 == 0 && (N-i) % 2 == 0 && i != (N-i)) {
return true ;
}
}
return false ;
}
int main(){
int N = 8;
bool ans = evenParts(N);
if (ans)
cout << "YES" << '\n' ;
else
cout << "NO" << '\n' ;
return 0;
}
|
Java
public class EvenParts {
public static boolean evenParts( int N) {
for ( int i = 1 ; i < N; i++) {
if (i % 2 == 0 && (N - i) % 2 == 0 && i != (N - i)) {
return true ;
}
}
return false ;
}
public static void main(String[] args) {
int N = 8 ;
boolean ans = evenParts(N);
if (ans) {
System.out.println( "YES" );
} else {
System.out.println( "NO" );
}
}
}
|
Python3
def evenParts(N):
for i in range ( 1 , N):
if i % 2 = = 0 and (N - i) % 2 = = 0 and i ! = (N - i):
return True
return False
if __name__ = = '__main__' :
N = 8
ans = evenParts(N)
if ans:
print ( "YES" )
else :
print ( "NO" )
|
C#
using System;
class GFG {
static bool evenParts( int N) {
for ( int i = 1; i < N; i++) {
if (i % 2 == 0 && (N - i) % 2 == 0 && i != (N - i)) {
return true ;
}
}
return false ;
}
static void Main( string [] args) {
int N = 8;
bool ans = evenParts(N);
if (ans)
Console.WriteLine( "YES" );
else
Console.WriteLine( "NO" );
}
}
|
Javascript
function evenParts(N) {
for (let i = 1; i < N; i++) {
if (i % 2 == 0 && (N - i) % 2 == 0 && i != (N - i)) {
return true ;
}
}
return false ;
}
let N = 8;
let ans = evenParts(N);
if (ans)
console.log( "YES" );
else
console.log( "NO" );
|
Time Complexity: O(n)
Space Complexity: O(1)
Approach: The core concept of the problem lies in the following observation:
The sum of any two even numbers is always even. Conversely any even number can be expressed as sum of two even numbers.
But here is two exceptions
- The number 2 is an exception here. It can only be expressed as the sum of two odd numbers (1 + 1).
- The number 4 can only be expressed as the sum of equal even numbers (2 + 2).
Hence, it is possible to express N as the sum of two even numbers only if N is even and not equal to 2 or 4. If N is odd, it is impossible to divide it into two even parts. Follow the steps mentioned below:
- Check if N = 2 or N = 4.
- If yes, then print NO.
- Else check if N is even (i.e. a multiple of 2)
- If yes, then print YES.
- Else, print NO.
Below is the implementation of the above approach.
C++
#include<iostream>
using namespace std;
bool evenParts( int N)
{
if (N == 2 || N == 4)
return false ;
if (N % 2 == 0)
return true ;
else
return false ;
}
int main(){
int N = 8;
bool ans = evenParts(N);
if (ans)
std::cout << "YES" << '\n' ;
else
std::cout << "NO" << '\n' ;
return 0;
}
|
Java
import java.util.*;
public class GFG {
static boolean evenParts( int N)
{
if (N == 2 || N == 4 )
return false ;
if (N % 2 == 0 )
return true ;
else
return false ;
}
public static void main(String args[])
{
int N = 8 ;
boolean ans = evenParts(N);
if (ans)
System.out.println( "YES" );
else
System.out.println( "NO" );
}
}
|
Python3
def evenParts(N):
if (N = = 2 or N = = 4 ):
return False
if (N % 2 = = 0 ):
return True
else :
return False
N = 8
ans = evenParts(N)
if (ans):
print ( "YES" )
else :
print ( "NO" )
|
C#
using System;
class GFG {
static bool evenParts( int N)
{
if (N == 2 || N == 4)
return false ;
if (N % 2 == 0)
return true ;
else
return false ;
}
public static void Main()
{
int N = 8;
bool ans = evenParts(N);
if (ans)
Console.Write( "YES" + '\n' );
else
Console.Write( "NO" + '\n' );
}
}
|
Javascript
<script>
function evenParts(N)
{
if (N == 2 || N == 4)
return false ;
if (N % 2 == 0)
return true ;
else
return false ;
}
let N = 8;
let ans = evenParts(N);
if (ans)
document.write( "YES" + '<br>' )
else
document.write( "NO" + '<br>' )
</script>
|
Time Complexity: O(1)
Auxiliary Space: O(1)
Share your thoughts in the comments
Please Login to comment...