C语言:编写程序验证哥德巴赫猜想

您所在的位置:网站首页 写一个判断素数的程序 C语言:编写程序验证哥德巴赫猜想

C语言:编写程序验证哥德巴赫猜想

2024-07-09 05:44| 来源: 网络整理| 查看: 265

目录

1. 哥德巴赫思想的解释

2. 程序设计思路

   2.1 判断输入值是否为偶数   

   2.2 写 prime 函数判断一个数是否为素数

   2.3 加数 b 要满足的条件

3. 完整程序代码

4. 运行结果

1. 哥德巴赫思想的解释

          哥德巴赫猜想:任何充分大的偶数都可由两个素数之和来表示,如 4=2+2,6=3+3,8=3+5······

2. 程序设计思路

         (1)首先调用 scanf ,获取键盘输入的一个数,设为 n

         (2)用 if 语句判断输入值 n 是否为偶数 (详见2.1)

         (3)写一个函数 prime 判断 n 的两个加数 a,b(a>b) 是否为素数 (详见2.2)

注意 !(4)明确 b 需要满足的条件(详见2.3)

        2.1 判断输入值是否为偶数    printf("请输入一个偶数:>"); scanf("%d", &n); if (n % 2 == 0) //判断 n 是否为偶数 { }

        2.2 写 prime 函数判断一个数是否为素数 //判断一个数是否为素数 int prime(int i) { if (i >= 2) { int j = 2; for (j = 2; j 2 的整数整除,则为素数 { if (i % j == 0) return 0; } return 1; } else return 0; }

       2.3 加数 b 要满足的条件

        若没加 b 的条件,仅仅通过判断a,b是否为素数打印结果,见代码如下:

if (prime(a) && prime(b)) //调用 prime函数,判断a,b是否为素数。 { printf("%d=%d+%d\n", n, a, b); }

        打印结果如下:

          显然,图中 第2 结果并不是我们所想要的。第2项 结果与第1项 在实际意义上是重复的。

          因此,为避免打印结果重复,增加条件 b >= n/2,即可符合要求。

          改善后代码如下:

if (prime(a) && prime(b) && b >= n / 2) //调用 prime函数,判断a,b是否为素数。并且b要满足所述条件 { printf("%d=%d+%d\n", n, a, b); }

        打印结果如下:     

3. 完整程序代码 #define _CRT_SECURE_NO_WARNINGS #include #include //判断一个数是否为素数 int prime(int i) { if (i >= 2) { int j = 2; for (j = 2; j 2 的整数整除,则为素数 { if (i % j == 0) return 0; } return 1; } else return 0; } int main() { int n, a, b; //a,b为 n 的两个加数 input: //在此运用 goto 语句,若输入错误,可返回重新输入 printf("请输入一个偶数:>"); scanf("%d", &n); if (n % 2 == 0) //判断 n 是否为偶数 { for (a = 2; a < n; a++) { b = n - a; if (prime(a) && prime(b) && b >= n / 2) //调用 prime函数,判断a,b是否为素数。并且b要满足所述条件 { printf("%d=%d+%d\n", n, a, b); } } } else { printf("输入错误,请重新输入\n\n"); goto input; } return 0; }

4. 运行结果



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3