[关闭]
@azmddy 2018-07-23T18:40:04.000000Z 字数 834 阅读 449

验证哥德巴赫猜想(一)

算法


1742年6月7日日哥德巴赫写信给当时的大数学家的欧拉,正式提出了一下猜想:
a.任何一个大于6的偶数都可以表示成两个素数成之和。
b.任何一个大于9的奇数都可以表示成三个素数之和。
在这里,通过程序证明猜想 a

目录

任务分解

判断素数

素数的简单介绍

素数,又称质数,它是指:除了1和其本身之外,没有其它约数的正整数。最小的素数是 21既不是素数也不是合数。

代码实现

  1. // 判断是否是素数
  2. // 是,则返回true
  3. // 不是,则返回false
  4. bool IsPrimeNumber(int i)
  5. {
  6. if (i <= 1) {
  7. return false;
  8. }
  9. else if (i == 2) {
  10. return true;
  11. }
  12. else {
  13. for (int j = 2; j < i; j++) {
  14. if (i%j == 0) { //如果含有其它约数,则表明不是素数
  15. return false;
  16. }
  17. else if (j < i - 1) {
  18. continue;
  19. }
  20. else {
  21. return true;
  22. }
  23. }
  24. }
  25. }

验证哥德巴赫猜想

任何一个大于6的偶数都可以表示成两个素数成之和。
首先需要一个数分解成两个数,然后分别验证它们是不是素数。

代码实现

  1. #include <iostream>
  2. #include <iomanip>
  3. using namespace std;
  4. int main()
  5. {
  6. int k = 0;
  7. int n = 0;
  8. for (int i = 6; i < 100; i+=2) {
  9. for (int j = 2; j < i / 2; j++) {
  10. k = i - j;
  11. if (IsPrimeNumber(j)) {
  12. if (IsPrimeNumber(k)) {
  13. cout << setw(3) << i << "=" << setw(3) << j << "+" << setw(3) << k << "\t";
  14. n++;
  15. if (n % 5 == 0) {
  16. n = 0;
  17. cout << endl;
  18. }
  19. }
  20. }
  21. }
  22. }
  23. system("pause");
  24. return 0;
  25. }

写在最后

哥德巴赫猜想的验证很简单,但是证明却是世界级的难题!

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注