求水仙花数-golang实现 | JianLinker Blog

求水仙花数-golang实现

题目

打印出100-999中所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153 是一个“水仙花数”,因为 153 = 1的三次方 + 5的三次方 + 3的三次方。

代码:方式一

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package main

import(
"fmt"
)

func isNumber(n int) bool {
var i, j, k int
i = n % 10
j = (n / 10) % 10
k = (n / 100) % 10

sum := i*i*i + k*k*k + j*j*j
return sum == n
}

func main(){
var m int
var n int
// scanf 默认是空格分隔的
fmt.Scanf("%d%d", &n, &m)

for i := n; i < m; i++ {
if isNumber(i) {
fmt.Println(i)
}
}
}

代码:方式二

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package main

import(
"fmt"
"strconv"
)

func main() {
var str string
fmt.Scanf("%s", &str)

var result = 0
for i := 0; i < len(str); i++ {
num := int(str[i] - '0') // ASCII
result += (num * num * num)
}

number, err := strconv.Atoi(str)
if err != nil {
fmt.Printf("can not convert %s to int\n", str)
return
}

if result == number {
fmt.Printf("%d is shuixianhuashu\n", number)
} else {
fmt.Printf("%d is not shuixianhuashu", number)
}
}
JianLinker wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!