哥德巴赫猜想:任何一个大于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;}//制作不易,希望点一键三连,点个关注不迷路,谢谢支持!
运行:
以上就是关于【哥德巴赫】猜想的全部内容了,具体还需要宝子们去实践,如果对你有帮助,那就点个关注吧,谢谢支持!