# Find N fractions that sum upto a given fraction N/D

Given a fraction N/D, the task is to split this fraction into N parts such that their sum is equal to the fraction N/D, i.e., Note: Represents the terms in terms of fractions, instead of floating point numbers.

Input: N = 4, D = 2
Output: 4/5, 1/5, 1/3, 4/6
Explanation: Therefore, it is a valid set of fractions such that their sum is Input: N = 3, D = 4
Output: 1/2, 1/10, 3/20
Explanation: Therefore, it is a valid set of fractions such that their sum is Approach: The key observation in the problem is that the first fraction numerator can be and then further denominators can be using the below recurrence relation. Below is the implementation of the above approach:

## C++

 // C++ implementation to split the // fraction into N parts #include using namespace std;   // Function to split the fraction // into the N parts void splitFraction(int n, int d) {     int ar[n];     int first = d + n - 1;     ar = first;       // Loop to find the N - 1     // fraction     for(int i = 1; i < n; i++)     {        int temp = --first;        first++;          ar[i] = first * temp;        --first;     }       // Loop to print the Fractions     for(int i = 0; i < n; i++)     {        if (ar[i] % n == 0)         {            cout << "1/" << ar[i] / n << ", ";        }        else        {            cout << n << "/" << ar[i] << ", ";        }     } }   // Driver Code int main() {     int N = 4;     int D = 2;       // Function Call     splitFraction(N, D); }   // This code is contributed by Bhupendra_Singh

## Java

 // Java implementation to split the // fraction into N parts   import java.util.Scanner;   class Solution {       // Function to split the fraction     // into the N parts     public static void     splitFraction(int n, int d)     {           long ar[] = new long[n];         long first = d + n - 1;         ar = first;           // Loop to find the N - 1         // fraction         for (int i = 1; i < n; i++) {             ar[i] = first * (--first);         }           // Loop to print the Fractions         for (int i = 0; i < n; i++) {             if (ar[i] % n == 0) {                 System.out.print(                     "1/" + ar[i] / n                     + ", ");             }             else {                 System.out.print(                     n + "/" + ar[i]                     + ", ");             }         }     }       // Driver Code     public static void main(         String[] args) throws Exception     {         int N = 4;         int D = 2;           // Function Call         splitFraction(N, D);     } }

## Python3

 # Python3 implementation to split the  # fraction into N parts    # Function to split the fraction  # into the N parts  def splitFraction(n, d):           ar = []     for i in range(0, n):          ar.append(0)           first = d + n - 1     ar = first           # Loop to find the N - 1      # fraction     for i in range(1, n):         temp = first - 1         ar[i] = first * temp         first -= 1           # Loop to print the Fractions      for i in range(0, n):         if ar[i] % n == 0:             print("1/", int(ar[i] / n),                   "," , end = " ")                             else:             print(n, "/", ar[i], ",", end = " ")       # Driver Code  N = 4 D = 2   # Function Call  splitFraction(N, D)   # This code is contributed by ishayadav181

## C#

 // C# implementation to split the // fraction into N parts using System;   class GFG{   // Function to split the fraction // into the N parts public static void splitFraction(int n, int d) {     long []ar = new long[n];     long first = d + n - 1;     ar = first;       // Loop to find the N - 1     // fraction     for(int i = 1; i < n; i++)     {        ar[i] = first * (--first);     }       // Loop to print the Fractions     for(int i = 0; i < n; i++)      {        if (ar[i] % n == 0)        {            Console.Write("1/" + ar[i] / n + ", ");        }        else        {            Console.Write(n + "/" + ar[i] + ", ");        }     } }   // Driver Code public static void Main(String[] args)  {     int N = 4;     int D = 2;       // Function Call     splitFraction(N, D); } }   // This code is contributed by SoumikMondal

## Javascript

 

Output:

4/5, 1/5, 1/3, 4/6,

Time Complexity: O(n), where n is the given integer.

Auxiliary Space: O(n), where n is the given integer.

Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!