Split a number into 3 parts such that none of the parts is divisible by 3

24 Jun, 2022
You are given a number ‘N’. Your task is to split this number into 3 positive integers x, y, and z, such that their sum is equal to ‘N’ and none of the 3 integers is a multiple of 3. Given that N>=2. 
Examples:  
Input : N = 10 Output : x = 1, y = 2, z = 7 Note that x + y + z = N and x, y & z are not divisible by N.Input : 18 Output :x = 1, y = 1, z = 16  
Approach: To split N into 3 numbers we split N as 
If N is divisible by 3, then the numbers x, y, z can be 1, 1, and N-2, respectively. All x, y, and z are not divisible by 3. And (1)+(1)+(N-2)=N .If N is not divisible by 3 then N-3 will also not be divisible by 3. Therefore, we can have x=1, y=2, and z=N-3.Also, (1)+(2)+(N-3)=N . 
If N is divisible by 3, then the numbers x, y, z can be 1, 1, and N-2, respectively. All x, y, and z are not divisible by 3. And (1)+(1)+(N-2)=N .
If N is not divisible by 3 then N-3 will also not be divisible by 3. Therefore, we can have x=1, y=2, and z=N-3.Also, (1)+(2)+(N-3)=N . 
C++
Java
Python3
C#
PHP
Javascript
// CPP program to split a number into three parts such// than none of them is divisible by 3.#include <iostream>using namespace std; void printThreeParts(int N){    // Print x = 1, y = 1 and z = N - 2    if (N % 3 == 0)        cout << " x = 1, y = 1, z = " << N - 2 << endl;     // Otherwise, print x = 1, y = 2 and z = N - 3    else        cout << " x = 1, y = 2, z = " << N - 3 << endl;} // Driver codeint main(){    int N = 10;    printThreeParts(N);    return 0;}
// Java program to split a number into three parts such// than none of them is divisible by 3.import java.util.*; class solution{ static void printThreeParts(int N){    // Print x = 1, y = 1 and z = N - 2    if (N % 3 == 0)                 System.out.println("x = 1, y = 1, z = "+ (N-2));     // Otherwise, print x = 1, y = 2 and z = N - 3    else        System.out.println(" x = 1, y = 2, z = "+ (N-3));} // Driver codepublic static void main(String args[]){    int N = 10;    printThreeParts(N);     }}
# Python3 program to split a number into three parts such# than none of them is divisible by 3. def printThreeParts(N) :     # Print x = 1, y = 1 and z = N - 2    if (N % 3 == 0) :        print(" x = 1, y = 1, z = ",N - 2)     # Otherwise, print x = 1, y = 2 and z = N - 3    else :        print(" x = 1, y = 2, z = ",N - 3)   # Driver codeif __name__ == "__main__" :      N = 10    printThreeParts(N) # This code is contributed by Ryuga
// C# program to split a number into three parts such// than none of them is divisible by 3.using System; public class GFG{    static void printThreeParts(int N){    // Print x = 1, y = 1 and z = N - 2    if (N % 3 == 0)        Console.WriteLine(" x = 1, y = 1, z = "+(N - 2));     // Otherwise, print x = 1, y = 2 and z = N - 3    else        Console.WriteLine(" x = 1, y = 2, z = "+(N - 3));} // Driver code    static public void Main (){    int N = 10;    printThreeParts(N);      }// This code is contributed by ajit.}
<?php// PHP program to split a number into// three parts such than none of them// is divisible by 3.function printThreeParts($N){    // Print x = 1, y = 1 and z = N - 2    if ($N % 3 == 0)        echo " x = 1, y = 1, z = " .                    ($N - 2) . "\n";     // Otherwise, print x = 1,    // y = 2 and z = N - 3    else        echo " x = 1, y = 2, z = " .                    ($N - 3) . "\n";} // Driver code$N = 10;printThreeParts($N); // This code is contributed by ita_c?>
<script> // javascript program to split a number into three parts such// than none of them is divisible by 3. function printThreeParts(N){    // Print x = 1, y = 1 and z = N - 2    if (N % 3 == 0)                 document.write("x = 1, y = 1, z = "+ (N-2));     // Otherwise, print x = 1, y = 2 and z = N - 3    else        document.write(" x = 1, y = 2, z = "+ (N-3));} // Driver code var N = 10;printThreeParts(N);  // This code contributed by Princi Singh </script>
x = 1, y = 2, z = 7
 
Time Complexity: O(1), since there is no loop or recursion.
Auxiliary Space: O(1), since no extra space has been taken.
ankthon
ukasp
Mithun Kumar
SURENDRA_GANGWAR
jit_t
nidhi_biet
princi singh
rohitkumarsinghcna
Kirti_Mangal
souravmahato348
divisibility
programming-puzzle
Mathematical
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Merge two sorted arrays
Operators in C / C++
Sieve of Eratosthenes
Prime Numbers
Program to find GCD or HCF of two numbers
Minimum number of jumps to reach end
Find minimum number of coins that make a given value
Algorithm to solve Rubik's Cube
Program for Decimal to Binary Conversion
Modulo 10^9+7 (1000000007)