Go编写输出“水仙花数” 输出介于a,b(含a,b,且a<=b)的所有“水仙花数”。所谓“水仙花数”是指一个数,其各位数字立方和等于该数本身。例如,153是一个“水仙花数”,因为153=13+53+33。 输入格式: 100 200 输出格式: 153 输入样例: 100 900 输出样例: 153 370 371 407
时间: 2024-02-20 11:57:43 浏览: 18
好的,这是一个简单的编程问题,下面是 Go 语言的代码实现:
```go
package main
import (
"fmt"
"math"
)
func isNarcissisticNumber(num int) bool {
sum := 0
n := num
for n > 0 {
i := n % 10
sum += int(math.Pow(float64(i), 3))
n /= 10
}
return sum == num
}
func main() {
var a, b int
fmt.Scan(&a, &b)
for i := a; i <= b; i++ {
if isNarcissisticNumber(i) {
fmt.Println(i)
}
}
}
```
首先定义一个函数 `isNarcissisticNumber` 用于判断是否是水仙花数。接着在 `main` 函数中读取输入的 a 和 b,然后遍历 a 到 b 的所有数字,判断是否是水仙花数,如果是则输出该数字。
相关问题
用go语言输出介于a,b(含a,b,且a<=b)的所有“水仙花数”。
好的,下面是Go语言的实现代码:
```go
package main
import (
"fmt"
"math"
)
func isNarcissisticNumber(num int) bool {
/*
判断一个数是否为水仙花数
*/
n := len(fmt.Sprintf("%d", num))
sum := 0
temp := num
for temp > 0 {
digit := temp % 10
sum += int(math.Pow(float64(digit), float64(n)))
temp /= 10
}
return sum == num
}
func findNarcissisticNumbers(a, b int) []int {
/*
输出所有介于a和b之间的水仙花数
*/
result := []int{}
for i := a; i <= b; i++ {
if isNarcissisticNumber(i) {
result = append(result, i)
}
}
return result
}
func main() {
// 测试
fmt.Println(findNarcissisticNumbers(100, 999))
}
```
输出结果为:
```
[153 370 371 407]
```
这四个数都是介于100和999之间的水仙花数。
用python编写一个程序,输出[a,b]间所有的水仙花数
水仙花数是指一个n位数(n≥3)它的每个位上的数字的n次幂之和等于它本身。例如,153是一个水仙花数,因为1³+5³+3³=153。
我们可以用以下代码实现:
```python
a = int(input("请输入a: "))
b = int(input("请输入b: "))
for num in range(a, b+1):
# 将num转换成字符串,再取出每一位数字
digits = [int(d) for d in str(num)]
# 计算每一位数字的n次方和
sum_of_digits = sum([d**len(digits) for d in digits])
# 判断是否为水仙花数
if num == sum_of_digits:
print(num)
```
我们先输入a和b的值,然后用for循环遍历[a,b]区间内的每一个数。对于每一个数,我们将其转换成字符串,再用列表推导式将每一位数字转换成整型数字。然后,我们计算每一位数字的n次方和,其中n为数字的位数。最后,我们判断该数是否等于每一位数字的n次方和,如果等于,则输出该数。