孪生素数问题

描述

两个相差为2的素数称为孪生素数,如5和7,17和19等,请找出所有两个数均不大于n的孪生素数。

输入描述

输入一个正整数n。

输出描述

输出所有小于等于n的孪生素数。每对素数输出一行,中间用单个空格隔开。

若没有找到任何素数对,请输出empty。

用例输入 1 

100

用例输出 1 

3 5
5 7
11 13
17 19
29 31
41 43
59 61
71 73

提示:1<=n<=10000

方法1:

#include<bits/stdc++.h>
using namespace std;
int su(int n)
{
    if (n<2) return 1;
    for (int i=2;i*i<=n;i++) 
    {
        if (n%i==0) return 1;
    }
    return 0;
}
int main()
{
    int a;
    cin>>a;
    int m=0;
    for (int i=2;i<=a;i++)
    {
        for (int j=2;j<=a;j++)
        {
            if (i%2==1 && j%2==1 && j-i==2) 
            {
                if (su(i)==0 && su(j)==0) 
                {
                    cout<<i<<" "<<j<<endl; 
                    m=1;
                }
            }
        }
    }
    if (m==0) cout<<"empty";
}

方法2:

#include<bits/stdc++.h>
using namespace std;
int su(int n)
{
    if (n<2) return 1;
    for (int i=2;i*i<=n;i++) 
    {
        if (n%i==0) return 1;
    }
    return 0;
}
int su1(int x,int y)
{
    if (y-x!=2) return 1;
    if (su(x)==0 && su(y)==0) return 0;
    return 1;
}
int main()
{
    int a;
    cin>>a;
    int m=0;
    for (int i=2;i<=a;i++)
    {
        for (int j=2;j<=a;j++)
        {
            if (su1(i,j)==0) 
            {
                cout<<i<<" "<<j<<endl;
                m=1;
            }
        }
    }
    if (m==0) cout<<"empty";
}

方法3:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int li[10002]={0};
    for (int i=2;i*i<=10000;i++)
    {
        if (li[i]!=1)
        {
            for (int j=i+i;j<=10000;j+=i) li[j]=1;
        }
    }
    int n;
    cin>>n;
    if (n<5) cout<<"empty";
    else
    {
        for (int i=4;i<=n;i++)
        {
            if (li[i]==0 && li[i-2]==0) cout<<i-2<<" "<<i<<endl;
        }
    }
}

//关注一下吧

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值