题目描述
求出哥德巴赫猜想的所有解(将一个大于9的奇数拆分成三个素数之和),并按从小到大的顺序写出。
输入
一行,一个大于9的奇数。
输出
第一行,一个整数N,表示解的总数。 第2-N+1行,每行一个解。
样例
输入
15
输出
3 15=2+2+11 15=3+5+7 15=5+5+5
和普通的猜想差不了多少,也都是判断素数加暴力枚举
码来!
#include<bits/stdc++.h>
using namespace std;
bool ss(int a)//常规判断素数的自定义函数(为了方便枚举)
{
for(int i=2; i<a; i++)
if(a%i==0)return false;
return true;
}
int a,ct;
int main(){
cin>>a;
for(int i=2; i<=a; i++)
{
for(int k=i; k<=a; k++)
{
for(int j=k; j<=a; j++)
if(i+k+j==a&&ss(i)&&ss(k)&&ss(j))ct++;//判断和普通的猜想差不了多少
}
}
cout<<ct<<endl;//因为要问有多少个解,所以要枚举两次
for(int i=2; i<=a; i++)
{
for(int k=i; k<=a; k++)
{
for(int j=k; j<=a; j++)
if(i+k+j==a&&ss(i)&&ss(k)&&ss(j))cout<<a<<"="<<i<<"+"<<k<<"+"<<j<<"\n";//这里就不用解释了
}
}
return 0;
}