C语言:证明【哥德巴赫】猜想(超详解)进来你就会!
时间:2024-04-21 21:40:29 来源:网络cs 作者:往北 栏目:物流仓储 阅读:
哥德巴赫猜想:任何一个大于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;}//制作不易,希望点一键三连,点个关注不迷路,谢谢支持!
运行:
以上就是关于【哥德巴赫】猜想的全部内容了,具体还需要宝子们去实践,如果对你有帮助,那就点个关注吧,谢谢支持!
本文链接:https://www.kjpai.cn/news/2024-04-21/161074.html,文章来源:网络cs,作者:往北,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
上一篇:传统目标跟踪——光流法
下一篇:返回列表