哥德巴赫猜想(输出满足的方案数)素数 || 质数

偶数x分解为两个素数的和,输出这种分解有多少种可能的方案数,其中需要判断一个数是否为素数,判断素数的功能要求自己写函数实现(否则不给分)

新手小白,欢迎交流

质数判断一般有三种方法 原理相似但计算数据逐次减少

方法一:从2~(n-1)逐个判断

方法二:一个数的因子小于自身的一半,下文采用该方法

方法三:一个数的因子不超过该数的算数平方根

//哥德巴赫猜想输出方案数
#include<stdio.h>
#include<math.h>

//函数判断是否为质数
int prime(int n){
    int i;
    for(int i=2;i<=n/2;i++){              //一个数的因子不会超过自身的一半
        if(n%i==0){
            return 0;                    //不是质数返回0
        }
    }
    return 1;                           //判断质数返回1
}

//主函数
int main(){
    int num,flag=0;                     //flag用于记录方案数
    scanf("%d",&num);
    if(num<6){
        printf("0\n");              //小于6的质数没有满足条件的存在  2 3 5. 7
    }
    else{
        for(int i=3;i<=num/2;i++){
            int prime_one,prime_two;    //逐个数排查
            prime_one=prime(i);
            if(prime_one==1){           //从最小的数字开始排查
                for(int j=num/2;j<num;j++){
                    prime_two=prime(j);
                    if(prime_two==1 && i+j==num){
                        flag++;
                    }
                }
            }
        }
        printf("%d\n",flag);
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值