C++程序 检查质数是否可以表示为两个质数的和
给定一个质数N,任务是检查是否可以将N表示为两个不同质数的和。
注意 :N的范围小于10 8 。
例子:
输入: N = 13
输出: 是
解释: 数字13可以写成11 + 2,
这里11和2都是质数。
输入: N = 11
输出: 否
简单解法 :一个简单的解法是创建一个筛以存储所有小于数N的质数。然后从1到N运行循环并检查是否 n 和 n-i 都是质数。如果是,则打印是;否则打印否。
高效解法 :除了2外,所有质数都是奇数。所以不可能将一个质数(奇数)表示为两个奇数质数的和,因此我们确定这两个质数中的一个应该是2。因此我们必须检查n-2是否为质数。如果是,我们打印“是”,否则打印“否”。
例如,如果数字是19,则我们必须检查19-2=17是否为质数。如果17是质数,则打印“是”否则打印“否”。
下面是上述方法的实现:
输出: