45: triangular pentagonal

This commit is contained in:
VicRen
2020-11-16 09:22:42 +08:00
parent bcc7f2c75f
commit d4b7351648
2 changed files with 44 additions and 2 deletions

View File

@@ -7,7 +7,7 @@ import (
) )
func main() { func main() {
for i := 7654321; i > 1; i-- { for i := 7654321; i >= 2143; i -= 2 {
if !isPandigital(strconv.Itoa(i)) { if !isPandigital(strconv.Itoa(i)) {
continue continue
} }
@@ -24,7 +24,6 @@ func isPrime(n int) bool {
return false return false
} }
res := n res := n
//牛顿法求平方根
for res*res > n { for res*res > n {
res = (res + n/res) / 2 res = (res + n/res) / 2
} }

View File

@@ -0,0 +1,43 @@
package main
import (
"fmt"
"math"
)
func main() {
i := 144
for {
m := 2*i*i - i
fmt.Println("i,m", i, m)
if isPentagonalNumber(m) {
fmt.Println("num:", m)
break
}
i++
}
}
func isPentagonalNumber(n int) bool {
r := math.Sqrt(float64(1 + 24*n))
if r-float64(int(r)) != 0 {
return false
}
return int(r)%6 == 5
}
func isTriangleNumber(n int) bool {
//tn = ½n(n+1)
x := 2 * n
res := x
//牛顿法求平方根
for res*res > x {
res = (res + x/res) / 2
}
for i := res; i > 0; i-- {
if i*(i+1) == x {
return true
}
}
return false
}