将偶数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;
}