啊哈c语言——逻辑挑战8:验证哥德巴赫猜想

本文介绍了哥德巴赫猜想的历史背景,以及如何通过编程验证4到100之间的偶数是否可以表示为两个质数之和。给出了一个简单的C语言代码示例,展示了如何判断质数并进行验证的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         上面这封书信是普鲁士数学家哥德巴赫在1742年6月7日写给瑞士数学家欧拉的,哥德巴赫在书信中提出了“任一大于2的整数都可以写成3个质数之和”的猜想。当时,哥德巴赫遵照的是“1也是素数”的约定。现今,数学界已经不使用这个约定了。哥德巴赫原猜想在现代被陈述为: 任一大于5的整数都可写成3个质数之和。1742年6月30日欧拉在回信中注明,此猜想可以有另一个等价的版本,即“任一大于2的偶数都可写成 两个质数之和”。

        我们现在所说的哥德巴赫猜想通常是指这个版本。两个多世纪过去 了,这一猜想既无法证明,也没有被推翻。我们现在将通过程序在4~ 100内验证这个猜想。

        让我们来验证4~100内所有偶数都可写成两个质数之和。首先4~ 100的偶数循环可以这样写:

         然后我们需要将每一个数k 拆分为a +b 的形式,a 的范围是2~k /2(自己想一想为什么到k /2就可以了)。如果a 和b都是质数的话我们就将其打印出来,说明对于数k我们验证成功了,然后继续验证下一个数。打印的效果如下:

         补充一点:上面的10还可以拆分为5+5,14还可以拆分为7+7。代码框架如下:

         通过之前的学习,我们已经掌握了如何判断一个数是否为质数。我们将判断质数的代码融合到上面的代码中,完整的代码如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int k, a, b, i, count1, count2;
	for(k=4; k<=100; k=k+2)
	{
		for(a=2; a<=k/2; a++)
		{
			//判断a是否为质数
			count1=0;
			for(i=2; i<=a-1; i++)
			{
				if(a%i==0)
				{
					count1++;
					break;
				}
			}
			if(count1==0) //如果a为质数
			{
				b=k-a;
				//判断b是否为质数
				count2=0;
				for(i=2; i<=b-1; i++)
				{
					if(b%i==0)
					{
						count2++;
						break;
					}
				}
				if(count2==0) //如果b也是质数
				{
					printf("%d=%d+%d\n", k, a, b);
					break; //打印这个解并跳出循环
				}
			}
		}
	}
	system("pause");
	return 0;
}

这里只验证了从4到100的数,你也可以验证更大的范围。当然,去验证哥德巴赫猜想有很多种方法,显然这种方法是不够好的,判断质数的部分也不够快,这里只是提供一种思路,我想你一定可以找到更高效的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值