WHCSRL 技术网

C语言验证“巴德赫尔猜想”_m0

”巴德赫尔猜想“是任一大于2的偶数都可以写成两个素数之和。

我们先理一理思路,就是一个偶数要分解成两个素数的和,只要保证这两个数都是素数相加等于那个偶数就好。

怎么保证他是素数呢?素数是他的公因数只有1和他本身,所以我们可以让这个数去除以比1大的数取余,余数不为0即可,并且保证每个比他小数都被除过。

要是一个程序里写两个判断素数的程序的话,繁琐还不美观,所以可以设计一个子函数,用函数调用的方式去搞定。

这个样子就可以啦!

  1. #include<stdio.h>
  2. #include<math.h>//要用到根号,因为只要除去比他的平方根小的数就行。
  3. int isprime(int n)//调用函数,判断其是不是素数。
  4. {
  5.     int i,m;
  6.     if (n==1) return 0;//肯定为素数
  7.     m=sqrt(n);
  8.     for (i=2;i<=m;i++)
  9.         if(n%%i==0) return 0;
  10.     return 1;//0和1是用来返回主函数,判断其是不是素数。
  11. }
  12. int main()//主函数
  13. {
  14.     int p,N;
  15.     scanf("%%d",&N);
  16.     if (N>2&&N<=2000000000&&N%%2==0)//可以不加这个,这是对输入数字的限定。
  17.     for(p=2;p<N;p++)
  18.        if(isprime(p)==1&&isprime(N-p)==1) break;//这个样子就可以保证两个数都为素数,且相加为输入的那个数
  19.       printf("%%d = %%d + %%d",N,p,N-p);
  20.     return 0;
  21. }

推荐阅读