题解 | #查找组成一个偶数最接近的两个素数#

查找组成一个偶数最接近的两个素数

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
}

全部评论

相关推荐

hso_:哈哈哈哈哈哈我没offer一样在同一道题开喷了
投递深圳同为数码等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务