【发布时间】:2012-12-05 08:32:38
【问题描述】:
给定一个偶数n>2,求和为n的素数。必须使用找到素数的函数。
也许可以开始这样的事情? :
for (int i = 2; i < n; i++)
{
if (IsPrime(i) && IsPrime(n - i))
break;
}
【问题讨论】:
-
是的,听起来是一个合理的起点。
-
是的,这个算法应该可以工作
-
提示:你真的需要迭代到
n吗? -
您需要自己编写
IsPrime()函数吗?我建议Sieve of Eratosthenes。这不是最优雅的解决方案,但它很容易理解,并且每个 学习程序员都会在某个时候编写。用所有小于n的素数填充std::vector,然后从底部遍历列表,对于每个素数p<n/2,检查n-p是否在列表中。 (这不一定是执行此操作的“最佳”方式,但对于初学者来说没问题)。 -
第一步是证明哥德巴赫猜想,留给读者作为练习。