13 条题解

  • 13
    @ 2022-8-18 22:01:06

    这一道题有个小聪明的办法,把上一题的函数代码搬下来(如UP)~

    1. 首先把函数搬下来(判断素数的函数 sushu)
    2. 然后只需要确定范围即可,可以发现是从 2 ~ n - 1
    3. 最后判断如果两个都是素数就输出并换行

    上代码吧~(简简单单AC~)

    #include <bits/stdc++.h>
    using namespace std;
    bool sushu(int n)
    {
        for (int i = 2; i < n; i++) if (n % i == 0) return false;
        return true;
    }
    int main()
    {
        int n;
        cin >> n;
        for (int i = 2; i <= n - 2; i++)
        {
            int a = i, b = i + 2;
            if (sushu(a) && sushu(b)) cout << a << " " << b << endl;
        }
        return 0;
    }
    
    • 6
      @ 2023-3-10 19:27:30
      #include <iostream>
      using namespace std;
      int main()
      {
          int n;
          cin >> n;
          for(int i=2;i<=n;i++)
          {
              int d=1;
              for(int j=2;j<i;j++)
              {
                  if(i%j==0)
                  {
                      d=0;
                      break;
                  }
              }
              if(d==1)
              {
                  for(int c=2;c<i+2;c++)
                  {
                      if((i+2)%c==0)
                      {
                          d=0;
                          break;
                      }
                  }
              }
              if(d==1)
              {
                  if(i+2<=n)
                  {
                      cout << i << " " << i+2 << endl;
                  }
              }
          }
      }
      
      • 2
        @ 2024-1-10 22:54:05
        #include <iostream>
        using namespace std;
        int main(){
            int N;cin>>N;
            auto prime=[](int p)->bool{
                for(int j=2;j<p;j++)if(p%j==0)return false;
                return true;
            };
            for(int i=2;i<N;i++)if(prime(i)&&prime(i+2))cout<<i<<" "<<i+2<<endl;
            return 0;
        }
        
        • 2
          @ 2023-12-19 20:24:23
          #include<iostream>
          using namespace std;
          int y; 
          bool t=1;
          int llk(int n,int m){
          	for(int i=2;i<n;i++){
          		if(n%i==0){
          			t=0;
          			return t;
          		}
          	}
          	for(int i=2;i<m;i++){
          		if(m%i==0){
          			t=0;
          			return t;
          		}
          	}
          	return t;
          }
          int main(){
          	cin>>y;
          	for(int i=2;i<=y-2;i++){
          		llk(i,i+2);
          		if(t){
          			cout<<i<<' '<<i+2<<endl;
          		}
          		t=1;
          	}
          	return 0;
          } 
          
          • 1
            @ 2023-12-7 19:31:06

            蒟蒻的题解来凑数啦!!!

            #include <bits/stdc++.h>
            #define ll long long
            #define Rep(x, a, b) for (int x = a; x <= b; x++)
            #define Dep(x, a, b) for (int x = a; x >= b; x--)
            using namespace std;
            bool isprime(int n)
            {
                if (n < 2)
                    return false;
                Rep(i, 2, sqrt(n))
                    if (!(n % i))
                        return false;
                return true;
            }
            int main()
            {
                // freopen("P139.in", "r", stdin);
                // freopen("P139.out", "w", stdout);
                ios::sync_with_stdio(false);
                cin.tie(0);
                cout.tie(0);
                int n;
                cin >> n;
                Rep(i, 1, n - 2)
                    if (isprime(i) && isprime(i + 2))
                        cout << i << " " << i + 2 << endl;
                return 0;
            }
            
            • 1
              @ 2023-11-4 20:26:42

              孪字打错了!!!

              #include<bits/stdc++.h>
              using namespace std;
              int sushu(int n){
              	bool r=true;
              	if(n<=1)r=false;
              	for(int i=2;i<=sqrt(n);i++){
              		if(n%i==0){
              			r=false;break;
              		}
              	}
              	return r;
              }
              int main(){
              	int n;cin>>n;
              	for(int i=2;i<=n;i++){
              		if(sushu(i-2)==true&&sushu(i)==true)cout<<i-2<<" "<<i<<endl;
              	}
                  return 0;
              }
              
              • 1
                @ 2023-5-19 13:28:03

                最短的

                呵呵,这题不难,先来撸一撸(好像打错了)思路:

                1,把上一题的函数照搬下来(懒)。
                
                2,确定循环范围(2~N-1)。
                
                3,判断。
                
                4*,优化:可以发现素数都是奇(单)数,因此我们把i设定成最小的素数三,然后每次加二。
                

                不说了,上代码!

                #include <bits/stdc++.h>
                using namespace std;
                bool prime(int x)
                {
                    for (int i=2;i<x;i++) if (x%i==0) return false;
                    return true;
                }
                int main()
                {
                    int n;cin>>n;
                    for (int i=3;i<n;i+=2)if (prime(i) && prime(i+2)) cout<<i<<" "<<i+2<<endl;
                    return 0;
                }
                
                • 0
                  @ 2023-8-10 20:18:49
                  #include <iostream>
                  using namespace std;
                  int main()
                  {
                      int n;
                      cin >> n;
                      for(int i=2;i<=n;i++)
                      {
                          int d=1;
                          for(int j=2;j<i;j++)
                          {
                              if(i%j==0)
                              {
                                  d=0;
                                  break;
                              }
                          }
                          if(d==1)
                          {
                              for(int c=2;c<i+2;c++)
                              {
                                  if((i+2)%c==0)
                                  {
                                      d=0;
                                      break;
                                  }
                              }
                          }
                          if(d==1)
                          {
                              if(i+2<=n)
                              {
                                  cout << i << " " << i+2 << endl;
                              }
                          }
                      }
                  }
                  
                  • 0
                    @ 2023-7-22 15:27:11
                    #include <cstdio>
                    using namespace std;
                    bool prime(int x){
                        if(x<2)return false;
                        for(int i=2;i<x;i++)if(x%i==0)return false;
                        return true;
                    }
                    int main(){
                        int n;
                        scanf("%d",&n);
                        for(int i=2;i<=n-2;i++)if(prime(i)&&prime(i+2))printf("%d%c%d\n",i,' ',i+2);
                        return 0;
                    }
                    
                    • 0
                      @ 2023-6-12 20:49:10

                      首先要定义函数prime

                      int prime(int n)
                      {
                          for (int i=2;i<n;i++)
                          {
                              if(n%i==0)
                              {
                                  return false;
                              }
                          }
                          return true;
                      }
                      

                      主函数中判断条件如下

                      if((prime(i))&&(prime(i+2)))
                      {
                                  cout << i << " " << (i+2) << endl;
                       }
                      
                      • 0
                        @ 2023-2-20 13:21:50
                        #include <iostream>//hetao3097453
                        using namespace std;
                        bool sushu(int n)
                        {
                            if(n == 1 || n == 2 || n == 0)
                            {
                                return false;
                            }
                            for(int i = 2;i < n;i++)
                            {
                                if(n % i == 0)
                                {
                                    return false;
                                }
                            }
                            return true;
                        }
                        int main()
                        {
                            int a,b,c,d;
                            for(int i = 1000;i < 3000;i++)
                            {
                                a = i;
                                b = i % 1000;
                                c = i % 100;
                                d = i % 10;
                                if((sushu(a) && sushu(b)) && (sushu(c) && sushu(d)))
                                {
                                    cout << a << endl;
                                }
                            }
                            return 0;
                        }
                        
                        
                        

                        函数搬下来(判断素数的函数 sushu)

                        确定范围即可,从 2 ~ n - 1

                        如果两个都是素数就输出

                        • 0
                          @ 2022-10-9 21:38:19

                          #include <bits/stdc++.h> using namespace std; int main() { int n,a,b,sum1=0,sum2=0; //a是i,b是i+1,sum1判断a是不是质数,sum2判断b(a+2)是不是质数. cin>>n; for(int i=2;i<=n-2;i++) { a=i; b=i+2; sum1=0; sum2=0; for(int c=2;c<=a-1;c++) { if(a%c0) //a有因数,sum1+1. { sum1++; } } for(int d=2;d<=b-1;d++) { if(b%d0) //a+2(b)有因数,sum2+1. { sum2++; } } if((sum10)&&(sum20)) { cout<<a<<" "<<b<<endl; //如果a和a+2(b)都是质数,输出a和a+2(b). } } return 0; }

                          • -2
                            @ 2022-5-27 14:41:15

                            题解:写一个函数判断是否是素数,然后直接调用就行。判断a和a+2就可以了。

                            注意有个坑点:就是范围是2~N,如果a=n的时候,那孪生素数就是a=n+2,会越界的。所以范围实际是2~n-2.

                            • 1

                            信息

                            ID
                            139
                            时间
                            1000ms
                            内存
                            16MiB
                            难度
                            4
                            标签
                            递交数
                            1447
                            已通过
                            691
                            上传者