哥德巴赫猜想:任何一个大于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.toymoban.com/news/detail-780020.html
以上就是关于【哥德巴赫】猜想的全部内容了,具体还需要宝子们去实践,如果对你有帮助,那就点个关注吧,谢谢支持!文章来源地址https://www.toymoban.com/news/detail-780020.html
到了这里,关于C语言:证明【哥德巴赫】猜想(超详解)进来你就会!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!