# Narcissistic number using GO Issue

We had a task for Narcissistic number using GO, in this respect we written code as -

``````package main
import "fmt"
func main() {
var number,tempNumber,remainder int
var result int =0
fmt.Scan(&number)

tempNumber = number

for {
remainder = tempNumber%10
result += remainder*remainder*remainder
tempNumber /= 10
if(tempNumber==0){
break
}
}

if(result==number){
fmt.Println("True")
}else{
fmt.Println("False")
}
}
``````

We are not able to get desire output, wrong marked in bold -

153 True fine
1634 False not fine
155 False fine
2 False not fine
12456 False Fine
371 True Fine
8208 False not fine
92727 False not fine
1000 False fine
548834 True fine

Your calculation only works for inputs of 3 digits, as you take each digit to the power of 3 hardcoded.

You need to take it to the power of `k`, where `k` is the number of digits of the number. All the currently â€ścorrectâ€ť results you have are correct by accident, not by implementation.

thanks but can you please let us know where we had hardcoded it plz â€¦

This line.

`result +=result**power`

This we need to write?

There is no power operator in Go. There is only `math.Pow()`, which would take `float64` and return `float64`.

You need to implement an integer based power function on your own. Should be relatively straight forward.

We tried below still same issue

``````var s int
var sum int
s = len(n)
for i:=0;i<len(n);i++ {
s=int(n[i]-'0')
sum += s*s*s
}``````

I donâ€™t see where you are calculating a narcissistic number.

Wikipedia: Narcissistic number

``````package main

import "fmt"

func main() {
var n int
_, err := fmt.Scanln(&n)
if err != nil || n < 0 {
fmt.Println("False")
return
}

digits := 0
for m := n; m > 0; m /= 10 {
digits++
}

sum := 0
for m := n; m > 0; m /= 10 {
digit := m % 10
pow := 1
for i := 1; i <= digits; i++ {
pow *= digit
}
sum += pow
}
if sum == n {
fmt.Println("True")
} else {
fmt.Println("False")
}
}
``````

thanks a lot

Please do not provide solutions to obvious homework, no one will learn from that.

2 Likes

There is no such rule; that is not true.

Look at this solution, is this what you want ? :

https://play.golang.org/p/L5mjCnWeyay