我正在解决Project Euler 问题 16,我最终得到了一个可以在逻辑上解决它的代码,但由于我认为它溢出或其他原因而无法处理?我尝试用 int64 代替 int,但它只打印 0,0。如果我将电源更改为低于 30 的任何值,它可以工作,但高于 30 它不起作用,谁能指出我的错误?我相信它无法计算 2^1000。
// PE_16 project main.go
package main
import (
"fmt"
)
func power(x, y int) int {
var pow int
var final int
final = 1
for pow = 1; pow <= y; pow++ {
final = final * x
}
return final
}
func main() {
var stp int
var sumfdigits int
var u, t, h, th, tth, l int
stp = power(2,1000)
fmt.Println(stp)
u = stp / 1 % 10
t = stp / 10 % 10
h = stp / 100 % 10
th = stp / 1000 % 10
tth = stp / 10000 % 10
l = stp / 100000 % 10
sumfdigits = u + t + h + th + tth + l
fmt.Println(sumfdigits)
}