鱼C论坛

 找回密码
 立即注册
查看: 2285|回复: 2

C语言的作业

[复制链接]
发表于 2021-4-4 16:28:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
是作业,不太明白
题目:编写一个程序,验证德巴赫猜想,任意一个大于6的偶数均可以表示为两个素数之和。要求:
a)输出6~20之间的偶数表示成素数之和的表达式。
b)每行输出5个表达式,每个式子之间间隔一个Tab位置,(用\t实现),且上下两行的式子要对齐。
c)统计并输出6~20之间的偶数可表示成素数之和的表达式形式个数。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-4-4 18:15:43 | 显示全部楼层
给你个思路吧,假设输入的数为X
从2开始,每个素数被X减,然后计算结果是否是素数  如果是就打印
如果不要求空间复杂度,可以先计算所有比X小的素数,然后存到数组里,然后for循环就完事
要求空间复杂度,那就没计算一个素数就计算(X-素数)是不是素数,是就打印
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-4 18:36:27 | 显示全部楼层
本帖最后由 yuxijian2020 于 2021-4-4 18:38 编辑
  1. #include <stdio.h>

  2. #define bool        int
  3. #define true        1
  4. #define false        0

  5. //计算素数
  6. bool PrimeNumber(unsigned int n)
  7. {
  8.         for (int i = n - 1; i > 1; i--)
  9.         {
  10.                 if (n % i == 0)
  11.                         return false;
  12.         }

  13.         return true;
  14. }
  15. //哥德巴赫猜想计算
  16. void Goldbach(unsigned int n)
  17. {
  18.         int index = 0;                                                //用于每行显示5条结果
  19.         for (int i = n - 1; i > 1; i--)
  20.         {
  21.                 if (!PrimeNumber(i) || !PrimeNumber(n - i))                        //如果i不是素数,或者n - i不是素数,就直接跳过
  22.                         continue;

  23.                 printf_s("%3d + %3d = %3d", i, n - i, n);
  24.                 index++;

  25.                 if (index % 5 != 0)
  26.                         printf_s("\t");
  27.                 else
  28.                 {
  29.                         printf_s("\n");
  30.                 }
  31.         }
  32. }

  33. void GetInputAndPrint()
  34. {
  35.         int X = 0;
  36.        
  37.         while (X <= 6)                                                        //如果输入的数小于等于6就重新输入
  38.         {
  39.                 printf_s("请输入一个大于6的数:\n");
  40.                 scanf_s("%d", &X);

  41.                 if (X <= 6)
  42.                         printf_s("输入错误!请确保输入的数大于6!\n");
  43.         }

  44.         Goldbach(X);
  45. }

  46. int main()
  47. {
  48.         GetInputAndPrint();
  49. }
复制代码
1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-30 12:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表