Generate an array having sum of Euler Totient Function of all elements equal to N (original) (raw)

Last Updated : 23 Jul, 2025

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 <bits/stdc++.h> 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<Integer> ans = new ArrayList<Integer>();

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

`

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