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

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

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

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

可以分为三个部分来写:

一:求100以内的素数;

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

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

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

一,求素数;

#include 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 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;}//制作不易,希望点一键三连,点个关注不迷路,谢谢支持!

运行:


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