Get the best out of our app
GFG App
Open App
Browser
Continue

# Generate an array having sum of Euler Totient Function of all elements equal to N

Given a positive integer N, the task is to generate an array such that the sum of the Euler Totient Function of each element is equal to N.

Examples:

Input: N = 6
Output: 1 6 2 3

Input: N = 12
Output: 1 12 2 6 3 4

Approach: The given problem can be solved based on the divisor sum property of the Euler Totient Function, i.e.,

Below is the implementation of the above approach:

## C++

 // C++ program for the above approach   #include using namespace std;   // Function to construct the array such // the sum of values of Euler Totient // functions of all array elements is N void constructArray(int N) {     // Stores the resultant array     vector ans;       // Find divisors in sqrt(N)     for (int i = 1; i * i <= N; i++) {           // If N is divisible by i         if (N % i == 0) {               // Push the current divisor             ans.push_back(i);               // If N is not a             // perfect square             if (N != (i * i)) {                   // Push the second divisor                 ans.push_back(N / i);             }         }     }       // Print the resultant array     for (auto it : ans) {         cout << it << " ";     } }   // Driver Code int main() {     int N = 12;       // Function Call     constructArray(N);       return 0; }

## Java

 // Java program for the above approach import java.util.*;   class GFG{       // Function to construct the array such // the sum of values of Euler Totient // functions of all array elements is N static void constructArray(int N) {           // Stores the resultant array     ArrayList ans = new ArrayList();       // Find divisors in sqrt(N)     for(int i = 1; i * i <= N; i++)     {                   // If N is divisible by i         if (N % i == 0)         {                           // Push the current divisor             ans.add(i);               // If N is not a             // perfect square             if (N != (i * i))             {                                   // Push the second divisor                 ans.add(N / i);             }         }     }       // Print the resultant array     for(int it : ans)     {         System.out.print(it + " ");     } }   // Driver Code public static void main(String[] args) {     int N = 12;       // Function Call     constructArray(N); } }   // This code is contributed by splevel62

## Python3

 # Python3 program for the above approach from math import sqrt   # Function to construct the array such # the sum of values of Euler Totient # functions of all array elements is N def constructArray(N):           # Stores the resultant array     ans = []       # Find divisors in sqrt(N)     for i in range(1, int(sqrt(N)) + 1, 1):                   # If N is divisible by i         if (N % i == 0):                           # Push the current divisor             ans.append(i)               # If N is not a             # perfect square             if (N != (i * i)):                                   # Push the second divisor                 ans.append(N / i)       # Print the resultant array     for it in ans:         print(int(it), end = " ")   # Driver Code if __name__ == '__main__':           N = 12           # Function Call     constructArray(N)   # This code is contributed by ipg2016107

## C#

 // C# program for the above approach using System; using System.Collections.Generic; class GFG{       // Function to construct the array such // the sum of values of Euler Totient // functions of all array elements is N static void constructArray(int N) {           // Stores the resultant array     List ans = new List();       // Find divisors in sqrt(N)     for(int i = 1; i * i <= N; i++)     {                   // If N is divisible by i         if (N % i == 0)         {                           // Push the current divisor             ans.Add(i);               // If N is not a             // perfect square             if (N != (i * i))             {                                   // Push the second divisor                 ans.Add(N / i);             }         }     }       // Print the resultant array     foreach(int it in ans)     {         Console.Write(it + " ");     } }   // Driver Code public static void Main() {     int N = 12;       // Function Call     constructArray(N); } }   // This code is contributed by ukasp

## Javascript



Output:

1 12 2 6 3 4

Time Complexity: O(√N)
Auxiliary Space: O(N)

My Personal Notes arrow_drop_up
Similar Reads
Related Tutorials