季秋


私信TA

用户名:autumn99

访问量:267

签 名:

等  级
排  名 44988
经  验 287
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 tust
专  业

  自我简介:

TA的其他文章

解题思路:将x内的素数存在数组中,通过遍历组合数字寻找符合条件的组合

注意事项:若两素数符合条件且不同,则需要将这部分的数量除以二,7+3和3+7是一种组合

参考代码:

#include<stdio.h>
#include<stdbool.h>
bool panduan(int x){//判断x是不是素数,是,则返回true,不是返回false
  if(x == 2) return true;
  if(x % 2 == 0){
    return false;
  }else{
    for(int i = 3; i < x; i++){
      if( x % i == 0 ) return false;
    }
    return true;
  }

}
int res(int x){//返回结果
  int cnt = 0,a[100000];
  for(int i = 2; i < x; i++){//将x内的素数存入数组a中
    if(panduan(i)){
      a[cnt] = i;
      cnt++;
    }
  }
  int i,j=0;
  int sum=0,sum1=0,sum2 = 0;
  for(i  = 0;i<cnt;i++){//枚举每一个素数组合判断是不是符合猜想
    for(j = 0;j < cnt;j++){
      if(a[i] != a[j]){//两个数字不一样,会多出一半输出,所以最后这部分数字除以二
        if(x == a[i]+ a[j]){
          sum1++;
        }
      }else{//两个数字一样
        if(x == a[i]+ a[i]){ 
          sum2++;  
        }
      }  
    }
  }
  sum = sum1/2 + sum2;
  
  return sum;
}
int main(){
  int x;
  scanf("%d",&x);
  printf("%d",res(x));
  return 0;
}


 

0.0分

2 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区