xiaonanu 2022-09-17 14:51 采纳率: 0%
浏览 88

c++:哥德巴赫猜想

问题遇到的现象和发生背景

哥德巴赫猜想
限制条件
时间限制: 1000 ms, 空间限制: 256 MB

题目描述
输入一个偶数N(N<=10000) ,验证 4~N所有偶数是否符合哥德巴赫猜想:任一大于




2的偶数都可写成两个质数之和。如果一个数不止一种分法,则输出第一个加数相比其他分法最小的方案。例如 10,10=3+7=5+5,则 10=5+5 是错误答案。

输入格式
第一行,输入一个偶数N(N<=10000) 。

输出格式
输出若干行,格式为N=x+y 。

样例
样例输入1  
10
样例输出2
4=2+2
6=3+3
8=3+5
10=3+7
###### 用代码块功能插入代码,请勿粘贴截图 

```c++
#include<bits/stdc++.h>
using namespace std;
bool isPrime(long long n)
{
    if(n==1)return 0;
    for(int i=2;i*i<=n;i++)if(n%i==0)return 0;
    return 1;
}
int main()
{
    long long n,prime=3;
    cin>>n;
    for(long long i=4;i<=n;i+=2)
    {
        prime=2;
        bool yn=1;
        for(;prime<=n/2;prime++)
        {
            if(isPrime(prime))
            {
                if(isPrime(i-prime) && yn)
                {
                    printf("%lld+%lld=%lld\n",prime,i-prime,i);
                    yn=0;
                }
            }
        }
    }
    return 0;

运行结果及报错内容

无报错,样例通过,0分。

我想要达到的结果

满分,求大家帮忙。

  • 写回答

2条回答 默认 最新

  • henwy 2022-09-17 14:57
    关注
    
    #include<bits/stdc++.h>
    using namespace std;
    int n;
    bool isprime(int m){
        if(m<=1) return false;
        for(int i=2;i<=sqrt(m);i++)if(m%i==0)return false;
        return true;
    }
    void divide(int n){
       int j;
       for(int i=2;i<n;i++){
          if(!isprime(i))continue;
          j=n-i;
          if(!isprime(j))continue;
            cout<<n<<"="<<i<<"+"<<j<<endl;
            break;
       }
    }
    int main(){
       cin>>n;
       if(n<=2)return 0;
       for(int i=4;i<=n;i+=2)divide(i);
       return 0;
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 9月17日

悬赏问题

  • ¥15 无源定位系统的时差估计误差标准差
  • ¥15 请问这个代码哪里有问题啊
  • ¥20 python--version在命令端输入结果Python is not defined怎么办?还有pip不是exe格式是不是没安装成功?
  • ¥15 通过GaussianView进行结构微调消除虚频
  • ¥15 调用transformers库
  • ¥15 由于导出的数据名字中带有/,导致Matlab打不开,怎么办?
  • ¥15 新硬盘安装的程序总是崩溃,提示遇到错误
  • ¥15 openpcdet自制数据集评估bev精度和3d精度相同
  • ¥15 excel 上下按钮 显示行
  • ¥20 云卓h12pro 数传问题