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

哥德巴赫猜想:任何一个大于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;
}

//制作不易,希望一键三连,点个关注不迷路,谢谢支持!

 运行看效果:

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

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

二,存数组;

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

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

int arr[1000];  //创建一个数组

int cum = 0;    //创建为数组的下标

arr[cum] = i;  //储存

cum++;         //下标自加 



//制作不易,希望一键三连,点个关注不迷路,谢谢支持!

 加完之后图片:

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

 前两个部分完成了;

三,计算相加;

数组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;
}

//制作不易,希望点一键三连,点个关注不迷路,谢谢支持!

运行:

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


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

你可能感兴趣的:(c语言,算法,开发语言,学习)