题解 | #查找组成一个偶数最接近的两个素数#
查找组成一个偶数最接近的两个素数
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
}
查看18道真题和解析