/*验证歌德巴赫猜想,即 4-10000 之内的偶数总能表示为两个素数之和。*/#include #include//返回 0 代表不是质数,返回 1 代表是质数int IsPrime(int n){int i = 0;if (n < 2){return 0;}if (n == 2){return 1;}for (i = 2; i < n; i++){if (n%i == 0){return 0;}}return 1;}//假如不能拆分为两个素数之和返回 1,否则返回 1int IsSplitPrime(int n){//x + y = n;// x>= 2 && x <= n-1; 假如 x 是质数,那么我们再推断(n-x)是质数,我们找到了,我们就返回 1,否则返回 0int x = 0;for (x = 2; x < n; x++){if (IsPrime(x) && IsPrime(n - x)){return 1;}}return 0;}void main(){int i = 0;int nFlag = 1;for (i = 4; i <= 10000; i++){if (i % 2 == 0){if (IsSplitPrime(i) == 0){nFlag = 0;break;}}}if (nFlag == 0){printf("歌德巴赫猜想不正确.\n");}else{printf("歌德巴赫猜想正确.\n");}system("pause");return;}