”巴德赫尔猜想“是任一大于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;
}