C语言验证“巴德赫尔猜想”_m0
”巴德赫尔猜想“是任一大于2的偶数都可以写成两个素数之和。
我们先理一理思路,就是一个偶数要分解成两个素数的和,只要保证这两个数都是素数相加等于那个偶数就好。
怎么保证他是素数呢?素数是他的公因数只有1和他本身,所以我们可以让这个数去除以比1大的数取余,余数不为0即可,并且保证每个比他小数都被除过。
要是一个程序里写两个判断素数的程序的话,繁琐还不美观,所以可以设计一个子函数,用函数调用的方式去搞定。
这个样子就可以啦!
- #include<stdio.h>
- #include<math.h>//要用到根号,因为只要除去比他的平方根小的数就行。
- int isprime(int n)//调用函数,判断其是不是素数。
- {
- int i,m;
- if (n==1) return 0;//肯定为素数
- m=sqrt(n);
- for (i=2;i<=m;i++)
- if(n%%i==0) return 0;
- return 1;//0和1是用来返回主函数,判断其是不是素数。
- }
- int main()//主函数
- {
- int p,N;
- scanf("%%d",&N);
- if (N>2&&N<=2000000000&&N%%2==0)//可以不加这个,这是对输入数字的限定。
- for(p=2;p<N;p++)
- if(isprime(p)==1&&isprime(N-p)==1) break;//这个样子就可以保证两个数都为素数,且相加为输入的那个数
- printf("%%d = %%d + %%d",N,p,N-p);
- return 0;
- }
推荐阅读