【算法分析与设计】【哥德巴赫猜想 】​哥德巴赫猜想指出,任何偶数都可以表示为两个素数之和。可以证明,对于所有的情况,这个猜想都是正确的。现定义一种新型运算:哥德巴赫运算。这个运算对任意输入的X……

【问题描述】

哥德巴赫猜想指出,任何偶数

都可以表示为两个素数之和。可以证明,对于所有的情况,这个猜想都是正确的。

现定义一种新型运算:哥德巴赫运算。这个运算对任意输入的

,找到两个和为的素数和,并输出。如果有多对素数和为,则取差最大的一对。

通过观察可以发现,这个差必然是偶数,并且小于

。因此,我们可以重复多次哥德巴赫运算,直到得到的结果小于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;

 }

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beiqianqian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值