题解 | #查找组成一个偶数最接近的两个素数#
查找组成一个偶数最接近的两个素数
https://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9
package main //先求偶数的二分之一 //找到离二分之一最近的一个素数 然后就可以求出另一个素数了 //两个数肯定是分布在二分之一最近的 //4可以作为一种特殊情况 import ( "fmt" "math" ) func main() { n := 0 fmt.Scan(&n) if n == 4 { fmt.Println(2) fmt.Println(2) } //接下来将n除以2,然后判断离n/2最近的素数,如果是偶数肯定不是素数 if n > 4 { for i := n / 2; i > 1; i-- { if i%2 == 0 { continue } if isPrime(i) && isPrime(n-i) { fmt.Println(i) fmt.Println(n - i) break } } } } //编写一个函数判断素数,如果是偶数肯定不是素数 //如果存在其他因子 肯定分布在n的平方根左右,所以只要循环2到n的平方根就行了 func isPrime(n int) bool { if n == 2 { return true } if n%2 == 0 { return false } for i := 2; i < int(math.Sqrt(float64(n)))+1; i++ { if n%i == 0 { return false } } return true }