# Dudeney Numbers

Given an integer n, the task is to check if n is a Dudeney number or not. A Dudeney number is a positive integer that is a perfect cube such that the sum of its decimal digits is equal to the cube root of the number.

Examples:

Input: N = 19683
Output: Yes
19683 = 273 and 1 + 9 + 6 + 8 + 3 = 27

Input: N = 75742
Output: No

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

• Check if n is a perfect cube, if not then it cannot be a Dudeney number.
• If n is a perfect cube then calculate the sum of its digits. If the sum of it’s digits is equal to its cube root then it is a Dudeney number else it is not.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `// Function that returns true if ` `// n is a Dudeney number ` `bool` `isDudeney(``int` `n) ` `{ ` `    ``int` `cube_rt = ``int``(round((``pow``(n, 1.0 / 3.0)))); ` ` `  `    ``// If n is not a perfect cube ` `    ``if` `(cube_rt * cube_rt * cube_rt != n) ` `        ``return` `false``; ` ` `  `    ``int` `dig_sum = 0; ` `    ``int` `temp = n; ` `    ``while` `(temp > 0) { ` ` `  `        ``// Last digit ` `        ``int` `rem = temp % 10; ` ` `  `        ``// Update the digit sum ` `        ``dig_sum += rem; ` ` `  `        ``// Remove the last digit ` `        ``temp /= 10; ` `    ``} ` ` `  `    ``// If cube root of n is not equal to ` `    ``// the sum of its digits ` `    ``if` `(cube_rt != dig_sum) ` `        ``return` `false``; ` ` `  `    ``return` `true``; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `n = 17576; ` `    ``if` `(isDudeney(n)) ` `        ``cout << ``"Yes"``; ` `    ``else` `        ``cout << ``"No"``; ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java implementation of the approach ` `import` `java.lang.Math; ` ` `  `class` `GFG ` `{ ` `     `  `// Function that returns true if ` `// n is a Dudeney number ` `static` `boolean` `isDudeney(``int` `n) ` `{ ` `    ``int` `cube_rt = (``int``)(Math.round((Math.pow(n, ``1.0` `/ ``3.0``)))); ` ` `  `    ``// If n is not a perfect cube ` `    ``if` `(cube_rt * cube_rt * cube_rt != n) ` `        ``return` `false``; ` ` `  `    ``int` `dig_sum = ``0``; ` `    ``int` `temp = n; ` `    ``while` `(temp > ``0``) ` `    ``{ ` ` `  `        ``// Last digit ` `        ``int` `rem = temp % ``10``; ` ` `  `        ``// Update the digit sum ` `        ``dig_sum += rem; ` ` `  `        ``// Remove the last digit ` `        ``temp /= ``10``; ` `    ``} ` ` `  `    ``// If cube root of n is not equal to ` `    ``// the sum of its digits ` `    ``if` `(cube_rt != dig_sum) ` `        ``return` `false``; ` ` `  `    ``return` `true``; ` `} ` ` `  `// Driver code ` `public` `static` `void` `main(String[] args) ` `{ ` `    ``int` `n = ``17576``; ` `    ``if` `(isDudeney(n)) ` `        ``System.out.println(``"Yes"``); ` `    ``else` `        ``System.out.println(``"No"``); ` `} ` `} ` ` `  `// This code is contributed by Code_Mech. `

## Python3

 `# Python implementation of the approach ` ` `  `# Function that returns true if  ` `# n is a Dudeney number ` `def` `isDudeney(n): ` `    ``cube_rt ``=` `int``(``round``((``pow``(n, ``1.0` `/` `3.0``)))) ` ` `  `    ``# If n is not a perfect cube ` `    ``if` `cube_rt ``*` `cube_rt ``*` `cube_rt !``=` `n: ` `        ``return` `False` ` `  `    ``dig_sum ``=` `0` `    ``temp ``=` `n ` `    ``while` `temp>``0``: ` `         `  `        ``# Last digit ` `        ``rem ``=` `temp ``%` `10` `         `  `        ``# Update the digit sum ` `        ``dig_sum ``+``=` `rem ` `         `  `        ``# Remove the last digit ` `        ``temp``/``/``=` `10` ` `  `    ``# If cube root of n is not equal to  ` `    ``# the sum of its digits ` `    ``if` `cube_rt !``=` `dig_sum: ` `        ``return` `False` ` `  `    ``return` `True` ` `  `# Driver code ` `if` `__name__ ``=``=` `'__main__'``: ` `     `  `    ``n ``=` `17576` `    ``if` `isDudeney(n): ` `        ``print``(``"Yes"``) ` `    ``else``: ` `        ``print``(``"No"``) `

## C#

 `// C# implementation of the approach ` `using` `System; ` ` `  `class` `GFG ` `{ ` `     `  `// Function that returns true if ` `// n is a Dudeney number ` `static` `bool` `isDudeney(``int` `n) ` `{ ` `    ``int` `cube_rt = (``int``)(Math.Round((Math.Pow(n, 1.0 / 3.0)))); ` ` `  `    ``// If n is not a perfect cube ` `    ``if` `(cube_rt * cube_rt * cube_rt != n) ` `        ``return` `false``; ` ` `  `    ``int` `dig_sum = 0; ` `    ``int` `temp = n; ` `    ``while` `(temp > 0) ` `    ``{ ` ` `  `        ``// Last digit ` `        ``int` `rem = temp % 10; ` ` `  `        ``// Update the digit sum ` `        ``dig_sum += rem; ` ` `  `        ``// Remove the last digit ` `        ``temp /= 10; ` `    ``} ` ` `  `    ``// If cube root of n is not equal to ` `    ``// the sum of its digits ` `    ``if` `(cube_rt != dig_sum) ` `        ``return` `false``; ` ` `  `    ``return` `true``; ` `} ` ` `  `// Driver code ` `public` `static` `void` `Main() ` `{ ` `    ``int` `n = 17576; ` `    ``if` `(isDudeney(n)) ` `        ``Console.Write(``"Yes"``); ` `    ``else` `        ``Console.Write(``"No"``); ` `} ` `} ` ` `  `// This code is contributed  ` `// by Akanksha Rai `

## PHP

 ` 0)  ` `    ``{  ` ` `  `        ``// Last digit  ` `        ``\$rem` `= ``\$temp` `% 10;  ` ` `  `        ``// Update the digit sum  ` `        ``\$dig_sum` `+= ``\$rem``;  ` ` `  `        ``// Remove the last digit  ` `        ``\$temp` `= ``\$temp``/10;  ` `    ``}  ` ` `  `    ``// If cube root of n is not equal to  ` `    ``// the sum of its digits  ` `    ``if` `(``\$cube_rt` `!= ``\$dig_sum``)  ` `        ``return` `false;  ` ` `  `    ``return` `true;  ` `}  ` ` `  `// Driver code  ` `\$n` `= 17576;  ` `if` `(isDudeney(``\$n``))  ` `    ``echo` `"Yes"``;  ` `else` `    ``echo` `"No"``; ` ` `  `// This code is contributed by Ryuga ` `?> `

Output:

```Yes
```

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.