 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<``int``> 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<``int``> ans = ``new` `List<``int``>();`   `    ``// 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