Open In App

Narcissistic number

Improve
Improve
Like Article
Like
Save
Share
Report

Given N, check whether it is a Narcissistic number or not.
Note:Narcissistic Number is a number that is the sum of its own digits each raised to the power of the number of digits

Examples :  

Input : 153
Output : yes
Explanation: 1^3+5^3+3^3=153 

Input : 1634
Output : yes
Explanation: 1^4+6^4+3^4+4^4=1634 

The approach will be to count the number of digits and then extract every digit and then by using pow function we can get the power of that digit and then sum it up at the end and compare with the original number to check if it is a Narcissistic Number or not.

Below is the implementation of the above idea.

C++




// CPP program for checking of
// Narcissistic number
#include <bits/stdc++.h>
using namespace std;
 
// function to count digits
int countDigit(int n)
{
    if (n == 0)
        return 0;
 
    return 1 + countDigit(n / 10);
}
 
// Returns true if n is Narcissistic number
bool check(int n)
{
    // count the number of digits
    int l = countDigit(n);
    int dup = n;
    int sum = 0;
 
    // calculates the sum of digits
    // raised to power
    while (dup)
    {
        sum += pow(dup % 10, l);
        dup /= 10;
    }
 
    return (n == sum);
}
 
// Driver code
int main()
{
    int n = 1634;
    if (check(n))
        cout << "yes";
    else
        cout << "no";
    return 0;
}


Java




// Java program for checking
// of Narcissistic number
import java.io.*;
import static java.lang.Math.*;
class narcissistic
{
 
// function to count digits
int countDigit(int n)
{
    if (n == 0)
        return 0;
  
    return 1 + countDigit(n / 10);
}
  
// Returns true if n is Narcissistic number
boolean check(int n)
{
    // count the number of digits
    int l = countDigit(n);
    int dup = n;
    int sum = 0;
  
    // calculates the sum of
    //digits raised to power
    while(dup > 0)
    {
        sum += pow(dup % 10, l);
        dup /= 10;
    }
  
    return (n == sum);
}
  
// Driver code
public static void main(String args[])
 {
    narcissistic obj = new narcissistic();
    int n = 1634;
    if (obj.check(n))
        System.out.println("yes");
    else
        System.out.println("no");
  }
}
 
//This code is contributed by Anshika Goyal.


Python3




# Python 3 program for checking of
# Narcissistic number
 
# function to count digits
def countDigit(n) :
    if (n == 0) :
        return 0
 
    return (1 + countDigit(n // 10))
     
 
# Returns true if n is Narcissistic number
def check(n) :
     
    # Count the number of digits
    l = countDigit(n)
    dup = n; sm = 0
 
    # Calculates the sum of digits
    # raised to power
    while (dup) :
        sm = sm + pow(dup % 10, l)
        dup = dup // 10
     
    return (n == sm)
     
 
# Driver code
n = 1634
if (check(n)) :
    print( "yes")
else :
    print( "no")
     
     
 
# This code is contributed by Nikita Tiwari.


C#




// C# program for checking
// of Narcissistic number
using System;
 
class narcissistic
{
 
    // function to count digits
    int countDigit(int n)
    {
        if (n == 0)
            return 0;
     
        return 1 + countDigit(n / 10);
    }
     
    // Returns true if n is Narcissistic number
    bool check(int n)
    {
        // count the number of digits
        int l = countDigit(n);
        int dup = n;
        int sum = 0;
     
        // calculates the sum of
        //digits raised to power
        while(dup > 0)
        {
            sum += (int)Math.Pow(dup % 10, l);
            dup /= 10;
        }
     
        return (n == sum);
    }
     
    // Driver code
    public static void Main()
    {
        narcissistic obj = new narcissistic();
        int n = 1634;
        if (obj.check(n))
            Console.WriteLine("yes");
        else
            Console.WriteLine("no");
    }
}
 
// This code is contributed by vt_m.


PHP




<?php
// PHP program for checking of
// Narcissistic number
 
// Function to count digits
function countDigit($n)
{
    if ($n == 0)
        return 0;
 
    return (1 + countDigit($n / 10));
}
 
// Returns true if n is
// Narcissistic number
function check( $n)
{
    // count the number of digits
    $l = countDigit($n);
    $dup = $n;
    $sum = 0;
 
    // calculates the sum of digits
    // raised to power
    while ($dup)
    {
        $sum += pow($dup % 10, $l);
        $dup = (int)$dup / 10;
    }
 
    return ($n == $sum);
}
 
// Driver Code
$n = 1634;
if (check(!$n))
    echo "yes";
else
    echo "no";
 
// This code is contributed by akt_mit
?>


Javascript




<script>
 
// Javascript program for checking of
// Narcissistic number
  
// Function to count digits
function countDigit(n)
{
    if (n == 0)
        return 0;
  
    return (1 + countDigit(n / 10));
}
  
// Returns true if n is
// Narcissistic number
function check( n)
{
    // count the number of digits
    let l = countDigit(n);
    let dup = n;
    let sum = 0;
  
    // calculates the sum of digits
    // raised to power
    while (dup)
    {
        sum += Math.pow(dup % 10, l);
        dup = parseINT(dup / 10);
    }
  
    return (n == sum);
}
  
// Driver Code
let n = 1634;
if (check(!n))
    document.write("yes");
else
    document.write("no");
  
// This code is contributed by _saurabh_jaiswal
</script>


Output

yes

Time Complexity: O(logn)

Auxiliary Space: O(1)
 

Method 2: Simplified Method using string

 

We have to take input as a string and traverse through string computing power of each character with the length of the string. Note: Here length of the string gives the number of digits of that number

 

Below is the implementation of the above approach

 

C++14




// CPP program for checking of
// Narcissistic number
#include <bits/stdc++.h>
#include <string.h>
using namespace std;
 
string getResult(string st)
{
    int sum = 0;
    int length = st.length();
     
    // Traversing through the string
    for (int i = 0; i < length; i++)
    {
        // Since ascii value of numbers
        // starts from 48 so we subtract it from sum
        sum = sum + pow(st[i] - '0', length);
    }
     
    // Converting string to integer
    int number = stoi(st);
     
    // Comparing number and sum
    if (number == sum)
        return "yes";
    else
        return "no";
}
 
// Driver Code
int main()
{
    string st = "153";
    cout << getResult(st);
    return 0;
}


Java




// Java program for checking of
// Narcissistic number
class GFG
{
 
static String getResult(String st)
{
    int sum = 0;
    int length = st.length();
     
    // Traversing through the string
    for (int i = 0; i < length; i++)
    {
       
        // Since ascii value of numbers
        // starts from 48 so we subtract it from sum
        sum = sum + (int)Math.pow(st.charAt(i) - '0', length);
    }
     
    // Converting string to integer
    int number = Integer.parseInt(st);
     
    // Comparing number and sum
    if (number == sum)
        return "yes";
    else
        return "no";
}
 
// Driver Code
public static void main(String []args)
{
    String st = "153";
    System.out.print(getResult(st));
}
}
 
// This code is contributed by rutvik_56.


Python3




# Python program for checking of
# Narcissistic number
 
 
def getResult(st):
    sum = 0
    length = len(st)
 
    # Traversing through the string
    for i in st:
 
        # Converting character to int
        sum = sum + int(i) ** length
 
    # Converting string to integer
    number = int(st)
 
    # Comparing number and sum
    if (number == sum):
        return "true"
    else:
        return "false"
 
 
# Driver Code
# taking input as string
st = "153"
print(getResult(st))


C#




// C# program for checking of
// Narcissistic number
using System;
class GFG
{
 
static string getResult(string st)
{
    int sum = 0;
    int length = st.Length;
     
    // Traversing through the string
    for (int i = 0; i < length; i++)
    {
       
        // Since ascii value of numbers
        // starts from 48 so we subtract it from sum
        sum = sum + (int)Math.Pow(st[i] - '0', length);
    }
     
    // Converting string to integer
    int number = int.Parse(st);
     
    // Comparing number and sum
    if (number == sum)
        return "yes";
    else
        return "no";
}
 
// Driver Code
public static void Main(string []args)
{
    string st = "153";
    Console.Write(getResult(st));
}
}
 
// This code is contributed by pratham76.


Javascript




<script>
    // Javascript program for checking of
    // Narcissistic number
     
    function getResult(st)
    {
        let sum = 0;
        let length = st.length;
 
        // Traversing through the string
        for (let i = 0; i < length; i++)
        {
 
            // Since ascii value of numbers
            // starts from 48 so we subtract it from sum
            sum = sum + Math.pow(st[i] - '0', length);
        }
 
        // Converting string to integer
        let number = parseInt(st, 10);
 
        // Comparing number and sum
        if (number == sum)
            return "yes";
        else
            return "no";
    }
     
    let st = "153";
    document.write(getResult(st));
     
</script>


 
 

Output

yes

Time Complexity: O(nlogn)

Auxiliary Space: O(1)

 References: http://mathandmultimedia.com/2012/01/16/narcissistic-numbers/
 

 



Last Updated : 17 Jul, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads