当前位置:首页 » 《休闲阅读》 » 正文

C语言:证明【哥德巴赫】猜想(超详解)进来你就会!

26 人参与  2024年04月24日 11:23  分类 : 《休闲阅读》  评论

点击全文阅读


哥德巴赫猜想:任何一个大于2的偶数总能表示为两个素数之和。

比如:24=5+19,其中5和19都是素数。

本实验的任务是设计一个程序,验证100以内的偶数都可以分解成两个素数之和;

本题关键:偶数(大于2)=素数+素数;

可以分为三个部分来写:

一:求100以内的素数;

二:把100以内素数存到一个数组里;

三:从数组中找素数相加来验证;

这样分开就好写,好理解多了;

 一,求素数;

#include <stdio.h>int main(){for (int i = 2; i <= 100; i++){int flag = 1;for (int j = 2; j < i; j++){if (i % j == 0){flag = 0;break;}}if (flag == 1){                      printf("%d\n", i);}}return 0;}//制作不易,希望一键三连,点个关注不迷路,谢谢支持!

 运行看效果:

有看不懂的宝子可以看我之前的博客,有详解; 

二,存数组;

存数组好处:将素数整理,便于相加;

只需在这基本上加一点代码:

int arr[1000];  //创建一个数组int cum = 0;    //创建为数组的下标arr[cum] = i;  //储存cum++;         //下标自加 //制作不易,希望一键三连,点个关注不迷路,谢谢支持!

 加完之后图片:

 前两个部分完成了;

三,计算相加;

数组arr[100]中储存的现在全部为素数了,可以用来相加了;

代码:

int input = 0;scanf_s("%d", &input);for (int i = 0; i < cum; i++){for (int j = 0; j < cum; j++){if (input == arr[i] + arr[j])     //判断猜想printf("%d=%d+%d\n", input, arr[i], arr[j]);}}//制作不易,希望一键三连,点个关注不迷路,谢谢支持!

这样就完成了;

四,全部代码:

#include <stdio.h>int main(){printf("请输入大于2的偶数-->\n");int arr[10000];int cum = 0;for (int i = 2; i <= 100; i++){int flag = 1;for (int j = 2; j < i; j++){if (i % j == 0){flag = 0;break;}}if (flag == 1){                       //cum初始化为0,刚好与数组下标一样 arr[cum] = i;       //把素数全都存在数组arr[cum]中cum++;              }}int input = 0;scanf_s("%d", &input);printf("猜想证明:\n");for (int i = 0; i < cum; i++){int lag = 1;for (int j = 0; j < cum; j++){if (input == arr[i] + arr[j])printf("%d=%d+%d\n", input, arr[i] , arr[j]);}}return 0;}//制作不易,希望点一键三连,点个关注不迷路,谢谢支持!

运行:


以上就是关于【哥德巴赫】猜想的全部内容了,具体还需要宝子们去实践,如果对你有帮助,那就点个关注吧,谢谢支持!


点击全文阅读


本文链接:http://zhangshiyu.com/post/99461.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1