【问题描述】
哥德巴赫猜想指出,任何偶数
都可以表示为两个素数之和。可以证明,对于所有的情况,这个猜想都是正确的。
现定义一种新型运算:哥德巴赫运算。这个运算对任意输入的
,找到两个和为的素数和,并输出。如果有多对素数和为,则取差最大的一对。
通过观察可以发现,这个差必然是偶数,并且小于
。因此,我们可以重复多次哥德巴赫运算,直到得到的结果小于4。
现给定
,请你找出在达到小于4的数字之前需要多少次哥德巴赫运算。
【输入形式】
输入包含一个整数
【输出形式】
输出为一行,仅包含一个整数。表示将
转换为一个小于4的数字需要的哥德巴赫运算次数。
【样例输入】
20
【样例输出】
3
#include<iostream>
using namespace std;
int prime(int n)
{
if(n<2) return 0;
for(int i=2;i<n;i++)
{
if(n%i==0) return 0;
}
return 1;
}
int num=0;
void gedebahe(int x)
{
int q=-1;
for(int i=2;i<x;i++)
{
if(prime(i)==1&&prime(x-i)==1)
{
num++;
//cout<<x<<"="<<i<<"+"<<x-i<<endl;
q=x-2*i;
//cout<<num<<endl;
break;
}
}
if(q<4) return;
else if(q>=4)
{
gedebahe(q);
}
}
int main()
{
int x;
cin>>x;
gedebahe(x);
cout <<num<<endl;
}