Thursday, January 9, 2025
Google search engine

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 
 

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 <bits/stdc++.h>
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




<?php
// PHP implementation of the approach
 
// Function that returns true if
// n is a Dudeney number
function isDudeney($n)
{
    $cube_rt = floor(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 = $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
?>


Javascript




<script>
 
// Javascript implementation of the approach
 
// Function that returns true if
// n is a Dudeney number
function isDudeney(n)
{
    let cube_rt = parseInt(
        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;
 
    let dig_sum = 0;
    let temp = n;
     
    while (temp > 0)
    {
         
        // Last digit
        let rem = temp % 10;
 
        // Update the digit sum
        dig_sum += rem;
 
        // Remove the last digit
        temp = parseInt(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
let n = 17576;
 
if (isDudeney(n))
    document.write("Yes");
else
    document.write("No");
     
// This code is contributed by souravmahato348
 
</script>


Output: 

Yes

 

Time Complexity: O(logn)

Auxiliary Space: O(1)

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments