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

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

  1. If N is divisible by 3, then 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 .
  2. 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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 code
int main()
{
    int N = 10; 
    printThreeParts(N);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 code
public static void main(String args[])
{
    int N = 10
    printThreeParts(N);
      
}
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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 code 
if __name__ == "__main__"
   
    N = 10 
    printThreeParts(N)
  
# This code is contributed by Ryuga

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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. 

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?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
?>

chevron_right


Output:

x = 1, y = 2, z = 7

Time Complexity: O(1)



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.