题解
【基础】哥德巴赫猜想
1 条题解
-
0
#include<bits/stdc++.h>//271 哥德巴赫猜想的所有解 using namespace std; bool zs(int x){ //模版写法 判断接收的数是否是质数 if(x<2) return 0; //返回0表示x不是质数 //在1~x之间找到一个因数就说明x不是质数 for(int i=2;i*i<=x;i++){ if(x%i==0){ return 0; } } return 1; //返回1表示x是质数 } int main(){ int a,s=0; //s计数器用来统计符合条件的情况数量 先清空 cin>>a;//大于9的奇数 for(int i=2;i<a;i++){ //先循环用i找第一个加数 for(int j=2;j<a;j++){ //嵌套循环用j找第二个加数 第三个加数就是a-i-j //判断三个加数必须都是质数 并且是按照从小到大的顺序排列的 if(zs(i)&&zs(j)&&zs(a-i-j)&&i<=j&&j<=a-i-j){ s++; //符合上述条件就把计数器+1 } } } cout<<s<<endl; //先按题目要求输出一共有几种情况并换行 //与上面一样的把循环嵌套和逻辑判断代码复制一遍 输出具体的情况 for(int i=2;i<a;i++){ for(int j=2;j<a;j++){ if(zs(i)&&zs(j)&&zs(a-i-j)&&i<=j&&j<=a-i-j){ //按题目的输出格式输出每一种情况 注意换行 cout<<a<<"="<<i<<"+"<<j<<"+"<<a-i-j<<endl; } } } return 0; }
- 1