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

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

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
}

全部评论

相关推荐

09-22 09:42
门头沟学院 Java
牛客37185681...:马德,我感觉这是我面过最恶心的公司,一面是两个女hr,说什么实习前几个月属于试用期,试用期过了才能转成正式实习生,我***笑了,问待遇就是不说,问能不能接受全栈,沙币公司
如果可以选,你最想去哪家...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务