Given an integer **N**, the task is to check if **N** can be represented as the sum of two positive perfect cubes or not.

**Examples:**

Input:N = 28Output:YesExplanation:

Since, 28 = 27 + 1 = 3^{3}+ 1^{3}.

Therefore, the required answer is Yes.

Input:N = 34Output:No

**Approach:** The idea is to store the perfect cubes of all numbers from **1** to cubic root of **N** in a Map and check if **N** can be represented as the sum of two numbers present in the Map or not. Follow the steps below to solve the problem:

- Initialize an ordered map, say
**cubes,**to store the perfect cubes of first N natural numbers in sorted order. - Traverse the map and check for the pair having sum equal to
**N**. - If such a pair is found having sum
**N**, then print**“Yes”**. Otherwise, print**“No”**.

Below is the implementation of the above approach:

## C++

`// C++ program for the above approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to check if N can be represented` `// as sum of two perfect cubes or not` `void` `sumOfTwoPerfectCubes(` `int` `N)` `{` ` ` `// Stores the perfect cubes` ` ` `// of first N natural numbers` ` ` `map<` `int` `, ` `int` `> cubes;` ` ` `for` `(` `int` `i = 1; i * i * i <= N; i++)` ` ` `cubes[i * i * i] = i;` ` ` `// Traverse the map` ` ` `map<` `int` `, ` `int` `>::iterator itr;` ` ` `for` `(itr = cubes.begin();` ` ` `itr != cubes.end(); itr++) {` ` ` `// Stores first number` ` ` `int` `firstNumber = itr->first;` ` ` `// Stores second number` ` ` `int` `secondNumber = N - itr->first;` ` ` `// Search the pair for the first` ` ` `// number to obtain sum N from the Map` ` ` `if` `(cubes.find(secondNumber)` ` ` `!= cubes.end()) {` ` ` `cout << ` `"True"` `;` ` ` `return` `;` ` ` `}` ` ` `}` ` ` `// If N cannot be represented as` ` ` `// sum of two positive perfect cubes` ` ` `cout << ` `"False"` `;` `}` `// Driver Code` `int` `main()` `{` ` ` `int` `N = 28;` ` ` `// Function call to check if N` ` ` `// can be represented as` ` ` `// sum of two perfect cubes or not` ` ` `sumOfTwoPerfectCubes(N);` ` ` `return` `0;` `}` |

## Java

`// Java program for the above approach` `import` `java.util.*;` `class` `GFG` `{` ` ` `// Function to check if N can be represented` ` ` `// as sum of two perfect cubes or not` ` ` `public` `static` `void` `sumOfTwoPerfectCubes(` `int` `N)` ` ` `{` ` ` `// Stores the perfect cubes` ` ` `// of first N natural numbers` ` ` `HashMap<Integer, Integer> cubes = ` `new` `HashMap<>();` ` ` `for` `(` `int` `i = ` `1` `; i * i * i <= N; i++)` ` ` `cubes.put((i * i * i), i);` ` ` `// Traverse the map` ` ` `Iterator<Map.Entry<Integer, Integer> > itr` ` ` `= cubes.entrySet().iterator();` ` ` `while` `(itr.hasNext())` ` ` `{` ` ` `Map.Entry<Integer, Integer> entry = itr.next();` ` ` `// Stores first number` ` ` `int` `firstNumber = entry.getKey();` ` ` `// Stores second number` ` ` `int` `secondNumber = N - entry.getKey();` ` ` `// Search the pair for the first` ` ` `// number to obtain sum N from the Map` ` ` `if` `(cubes.containsKey(secondNumber))` ` ` `{` ` ` `System.out.println(` `"True"` `);` ` ` `return` `;` ` ` `}` ` ` `}` ` ` `// If N cannot be represented as` ` ` `// sum of two positive perfect cubes` ` ` `System.out.println(` `"False"` `);` ` ` `}` ` ` `// Driver code` ` ` `public` `static` `void` `main(String[] args)` ` ` `{` ` ` `int` `N = ` `28` `;` ` ` `// Function call to check if N` ` ` `// can be represented as` ` ` `// sum of two perfect cubes or not` ` ` `sumOfTwoPerfectCubes(N);` ` ` `}` `}` `// This code is contributed by shailjapriya.` |

## Python3

`# Python3 program for the above approach` `# Function to check if N can be represented` `# as sum of two perfect cubes or not` `def` `sumOfTwoPerfectCubes(N) :` ` ` `# Stores the perfect cubes` ` ` `# of first N natural numbers` ` ` `cubes ` `=` `{}` ` ` `i ` `=` `1` ` ` `while` `i` `*` `i` `*` `i <` `=` `N :` ` ` `cubes[i` `*` `i` `*` `i] ` `=` `i` ` ` `i ` `+` `=` `1` ` ` ` ` `# Traverse the map` ` ` `for` `itr ` `in` `cubes :` ` ` ` ` `# Stores first number` ` ` `firstNumber ` `=` `itr` ` ` ` ` `# Stores second number` ` ` `secondNumber ` `=` `N ` `-` `itr` ` ` ` ` `# Search the pair for the first` ` ` `# number to obtain sum N from the Map` ` ` `if` `secondNumber ` `in` `cubes :` ` ` `print` `(` `"True"` `, end ` `=` `"")` ` ` `return` ` ` ` ` `# If N cannot be represented as` ` ` `# sum of two positive perfect cubes` ` ` `print` `(` `"False"` `, end ` `=` `"")` `N ` `=` `28` `# Function call to check if N` `# can be represented as` `# sum of two perfect cubes or not` `sumOfTwoPerfectCubes(N)` `# This code is contributed by divyeshrabadiya07.` |

## C#

`// C# program for the above approach` `using` `System;` `using` `System.Collections.Generic;` `using` `System.Linq;` `class` `GFG{` ` ` `// Function to check if N can be represented` ` ` `// as sum of two perfect cubes or not` ` ` `public` `static` `void` `sumOfTwoPerfectCubes(` `int` `N)` ` ` `{` ` ` `// Stores the perfect cubes` ` ` `// of first N natural numbers` ` ` `Dictionary<` `int` `,` ` ` `int` `> cubes = ` `new` `Dictionary<` `int` `,` ` ` `int` `>();` ` ` `for` `(` `int` `i = 1; i * i * i <= N; i++)` ` ` `cubes.Add((i * i * i), i);` ` ` ` ` `var` `val = cubes.Keys.ToList();` ` ` `foreach` `(` `var` `key ` `in` `val)` ` ` `{` ` ` `// Stores first number` ` ` `int` `firstNumber = cubes[1];` ` ` `// Stores second number` ` ` `int` `secondNumber = N - cubes[1];` ` ` `// Search the pair for the first` ` ` `// number to obtain sum N from the Map` ` ` `if` `(cubes.ContainsKey(secondNumber))` ` ` `{` ` ` `Console.Write(` `"True"` `);` ` ` `return` `;` ` ` `}` ` ` `}` ` ` `// If N cannot be represented as` ` ` `// sum of two positive perfect cubes` ` ` `Console.Write(` `"False"` `);` ` ` `}` `// Driver Code` `static` `public` `void` `Main()` `{` ` ` `int` `N = 28;` ` ` `// Function call to check if N` ` ` `// can be represented as` ` ` `// sum of two perfect cubes or not` ` ` `sumOfTwoPerfectCubes(N);` `}` `}` `// This code is contributed by code_hunt.` |

**Output**

True

**Time Complexity: **O(N^{1/3} * log(N^{1/3})) **Auxiliary Space:** O(N^{1/3})

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the **Essential Maths for CP Course** at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**