怎么判断重复(10=3+7和10=7+3在题目里是同一个拆法)

#include<iostream>
#include<cmath>
using namespace std;
int n,count;
bool is_prime(int n){
    if(n==0||n==1)return false;
    for(int i=2;i<=sqrt(n);i++)if(n%i==0)return false;
    return true;
}int main(){
    cin>>n;
    for(int i=2;i<=n;i++){
        if(is_prime(i)){
            for(int j=2;j<=n-i;j++){
                if(is_prime(j)&&i+j==n){cout<<i<<" "<<j<<"\n";count++;}
            }
        }
    }cout<<count;
    return 0;
}

怎么判断重复(10=3+7和10=7+3在题目里是同一个拆法)
请各位大佬们在评论里帮我用代码块在这个程序上增加判断重复,中级班的水平

1 条评论

  • @ 2026-05-02 21:13:34

    i循环开到n/2应该就可以

    • 最后一个点超时

      #include<iostream>
      #include<cmath>
      using namespace std;
      int n,count;
      bool is_prime(int n){
          if(n==0||n==1)return false;
          for(int i=2;i<=sqrt(n);i++)if(n%i==0)return false;
          return true;
      }int main(){
          cin>>n;
          for(int i=2;i<=n/2;i++){
              if(is_prime(i)){
                  for(int j=2;j<=n-i;j++){
                      if(is_prime(j)&&i+j==n)count++;
                  }
              }
          }cout<<count;
          return 0;
      }
      
  • 1

信息

ID
1781
难度
5
分类
(无)
标签
递交数
144
已通过
52
通过率
36%
被复制
3
上传者