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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值