大一上离散数学课的时候,看到了一个题目,讲的是哥德巴赫猜想,一想到哥德巴赫猜想的计算不难,但是计算量比较大,就想到了用c语言验证一下。
思路是这样的:
先考虑哥德巴赫猜想的基本计算方法:大于4的偶数是由两个的奇数素数的和,就想到一个数字如果是和的话一定是比他小的两个数字之和。就先算出范围内的素数,用数组保存起来。然后用遍历循环每个相加。就可以验证哥德巴赫猜想了。
可能遇到的问题:
1.输入值过大时,溢出。
c中int, long ,long long这些类型保存数字的时候因为内存原因是肯定不能无限的,所以就定了1024个数这个来保存这么多个素数。
2.确定最后的成功个数.
因为是范围内的偶数,所以最后的个数一定是(x-6)/2;
但是在上面遍历查找的时候会多出来,比如一个偶数可能有很多种组合,于是我就想到了一个偶数只用有一次成功就行,然后直接break跳出循环就行了。
3.刷新lage标记的状态
因为每次lage被标记之后,如果还需要他来标记,那么就需要lage刷新,所以在最开始的时候需要加lage来刷新。
4.加调试行输出最后的运算结果
在最后的时候不确定运算结果可以加调试行来检查。
(刚大一学到指针写的,如果有需要改进的地方欢迎给出建议。)