Go?中大数的幂和根

  • 本文关键字:Go go
  • 更新时间 :
  • 英文 :


我正在尝试将(用于学习)下面的Python代码移植到Go - Python工作良好。

for n in range (81522017,81522025):
     b = int(str(n) + str(n+1)+str(n+2))
     if b**(1/3) % 1 == 0:
         print(n,b)
         break
//solution 81522019   and  815220198152202081522021

所以在Go中,我最终得到:

package main
import (
    "fmt"
    "strconv"
    "math"
)
func main() {
  
    for n:=81522017; n<81522025;n++{
      b:=(strconv.Itoa(n)+strconv.Itoa(n+1)+strconv.Itoa(n+2))
      bFloat, _ := (strconv.ParseFloat(b,64))
    
      if math.Mod((math.Pow((bFloat),(1.0/3.0))),1.0)   == 0 {
          fmt.Println(n,bFloat)  
      }    
    }
}

if语句中的条件永远不满足,因此不显示解决方案。我认为这与处理浮点数的精度有关。

最后,我正在考虑取一个大整数(在本例中为815220198152202081522021)的立方根,并检查它是否是一个纯整数——因此Python代码中的%1。

我错过了什么——一定有更简单的方法来做到这一点....

任何帮助/指示,非常感谢。

我认为这是因为你使用Float %整数,比如69.777 % 1.0,它必须是0.777,而不是0,所以它不符合if条件。你试试这个解决方案。这是添加int(),哈哈。

if int(math.Mod((math.Pow((bFloat),(1.0/3.0))),1.0)) == 0 {
    fmt.Println(n,bFloat)  
}

相关内容

  • 没有找到相关文章

最新更新