求出哥德巴赫猜想的所有解(将一个大于9的奇数拆分成三个素数之和),并按从小到大的顺序写出。
输入格式
一行,一个大于9的奇数。
输出格式
第一行,一个整数N,表示解的总数。 第2-N+1行,每行一个解。
输入数据 1
15
输出数据 1
3
15=2+2+11
15=3+5+7
15=5+5+5
(运用二维数组的方法)
求出哥德巴赫猜想的所有解(将一个大于9的奇数拆分成三个素数之和),并按从小到大的顺序写出。
输入格式
一行,一个大于9的奇数。
输出格式
第一行,一个整数N,表示解的总数。 第2-N+1行,每行一个解。
输入数据 1
15
输出数据 1
3
15=2+2+11
15=3+5+7
15=5+5+5
(运用二维数组的方法)
双层for循环遍历即可,如果能找到3个奇数就输出。代码如下:
#include <iostream>
using namespace std;
//判断素数
int isprime(int n)
{
if(n<2)
return 0;
for(int i=2;i<n;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
int main()
{
int i,j,n;
int a[100][3];
int t = 0;
cin >> n;
for(i=2;i<n ;i++)
{
if(isprime(i))
{
for(j=i;j<n;j++)
{
if(isprime(j) && isprime(n-i-j) && (n-i-j)>=j)
{
a[t][0] = i;
a[t][1] = j;
a[t][2] = n-i-j;
t++;
}
}
}
}
//输出
cout << t<<endl;
for (i=0;i<t;i++)
{
if(i<t-1)
cout << n <<"="<<a[i][0]<<"+"<<a[i][1]<<"+"<<a[i][2]<<endl;
else
cout << n <<"="<<a[i][0]<<"+"<<a[i][1]<<"+"<<a[i][2];
}
return 0;
}