pat-1007素数对猜想(代码片段)

chance-zou chance-zou     2023-02-19     366

关键词:

题目:1007素数对猜想(20分)

让我们定义dn为:dn=pn+1?pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<10^5),请计算不超过N的满足猜想的素数对的个数。

输入格式

输入在一行给出正整数n

输出格式

在一行中输出不超过n的满足猜想的素数对的个数

输入样例

20

输出样例

4
技术分享图片

首先我们要明白怎么判断一个数是否是素数(2,3,5,7。。。)

质数有个特点就是它总是6k-1或者6k+1,其中k为大于1的自然数
如何论证这个结论呢,其实不难。首先 6x 肯定不是质数,因为它能被 6 整除;其次 6x+2 肯定也不是质数,因为它还能被2整除;依次类推,6x+3 肯定能被 3 整除;6x+4 肯定能被 2 整除。那么,就只有 6x+1 和 6x+5 (即等同于6x-1) 可能是质数了。所以循环的步长可以设为 6,然后每次只判断 6 两侧的数即可。
每次再判断一个数是否为质数时只需要判断2到根号n的数能否被n整除,如果存在可以被整除的数则为合数,否则为质数。


#include <iostream>
#include<math.h>
using namespace std;
int main()

    int n;
    cin >> n;
    if (n >= 5) //n如果小于5则不存在素数对
        int k = 1;
        int num = 1;//记录素数对的个数,初值为零是因为存在3,5这个素数对
        while (6 * k + 1 <= n) 
            int flag = 1;
            int a = 6 * k - 1;
            int b = 6 * k + 1;
            int a_sqrt = (int)sqrt(a);
            int b_sqrt = (int)sqrt(b);
            for (int i = 2;i <= a_sqrt;i++) 
                if (a%i == 0) 
                    flag = 0;
                
            //判断a是否为质数
            for (int i = 2;i <= b_sqrt;i++) 
                if (b%i == 0) 
                    flag = 0;
                
            //判断b是否为质数
            if (flag == 1) 
                num++;
            
            k++;
        
        cout << num;
        return 0;
    
    else 
        cout << 0;
        return 0;
    

参考文献:https://blog.csdn.net/afei__/article/details/80638460




1007素数对猜想(代码片段)

让我们定义d?n??为:d?n??=p?n+1???p?n??,其中p?i??是第i个素数。显然有d?1??=1,且对于n>1有d?n??是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<),请计算不超过N的满足猜想的素数对的个数... 查看详情

1007.素数对猜想(代码片段)

题目截图: 思路:  先生成素数表,然后验证每一对相邻且差为2的数是否为素数对。 代码:1/*21007.素数对猜想3*/45#include<stdio.h>6#include<string.h>7#include<math.h>8#include<stdlib.h>9#include<time.h>1011#def 查看详情

1007素数对猜想(20分)(代码片段)

1007素数对猜想(20分) 让我们定义d?n??为:d?n??=p?n+1???p?n??,其中p?i??是第i个素数。显然有d?1??=1,且对于n>1有d?n??是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<10?5??),请计算不超... 查看详情

1007素数对猜想(代码片段)

让我们定义d?n??为:d?n??=p?n+1??−p?n??,其中p?i??是第i个素数。显然有d?1??=1,且对于n>1有d?n??是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<),请计算不超过N的满足猜... 查看详情

1007.素数对猜想(代码片段)

...我们定义dn 为:dn =pn+1 -pn,其中pi 是第i个素数。显然有d1=1且对于n>1有dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的... 查看详情

pat素数对猜想(代码片段)

让我们定义d?n??为:d?n??=p?n+1??−p?n??,其中p?i??是第i个素数。显然有d?1??=1,且对于n>1有d?n??是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<10?5??),请计算不超过N的满... 查看详情

pat乙级1007.素数对猜想(20)(代码片段)

1007.素数对猜想(20)让我们定义dn为:dn=pn+1–pn,其中pi是第i个素数。显然有d1=1且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<105),请计算不超过N的满足... 查看详情

pat(basiclevel)practice1007素数对猜想(代码片段)

... 让我们定义d?n??为:d?n??=p?n+1???p?n??,其中p?i??是第i个素数。显然有d?1??=1,且对于n>1有d?n??是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<),请计算不超过N的满足猜想的素数对的... 查看详情

pat乙级.1007.素数对猜想(20)(代码片段)

...我们定义dn 为:dn =pn+1 -pn,其中pi 是第i个素数。显然有d1=1且对于n>1有dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的... 查看详情

素数对猜想(20)(代码片段)

1#include<iostream>2usingnamespacestd;34boolisprime(intn)5if(n<=1)returnfalse;6for(inti=2;i*i<=n;i++)7if(n%i==0)8returnfalse;9returntrue;101112intmain()13intn,sum=0,lastprime=2;14cin> 查看详情

patb1007素数对猜想(代码片段)

素数筛筛出规定范围内的所有素数存入数组遍历数组,如果满足于后边的差2,计数器加加#include<cstdio>constintmaxn=10000001;intprime[maxn]=0;boolp[maxn]=0;intpnum=0;voidFind_prime(intn)for(inti=2;i<=n;i++)if(p[i]==false)prime[pnum 查看详情

自测-2素数对猜想(20分)——数据结构-起步能力自测题(代码片段)

让我们定义dn​为:dn​=pn+1​−pn​,其中pi​是第i个素数。显然有d1​=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<10^5),请计算不超过N的满足猜想的素数对的个... 查看详情

1007素数对猜想(代码片段)

1007 素数对猜想 (20分) 让我们定义d?n??为:d?n??=p?n+1??−p?n??,其中p?i??是第i个素数。显然有d?1??=1,且对于n>1有d?n??是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整... 查看详情

1007素数对猜想(代码片段)

大致题意就是找出1到N中,满足素数相邻且差值为2的素数对数。#include"iostream"#include"cmath"usingnamespacestd;//判断素数boolisPrime(intn)if(n<=1)returnfalse;intt=sqrt(n);for(inti=2;i<=t;++i)if(n%i==0)returnfalse;returntrue;intmain()intn,i=3,cnt=0;cin>>n;for(i... 查看详情

1007素数对猜想(20分)(代码片段)

1007素数对猜想(20分)让我们定义d?n??为:d?n??=p?n+1???p?n??,其中p?i??是第i个素数。显然有d?1??=1,且对于n>1有d?n??是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<10?5??),请计算不超过N... 查看详情

1007素数对猜想(20分)(代码片段)

1007素数对猜想(20分) 让我们定义d?n??为:d?n??=p?n+1??−p?n??,其中p?i??是第i个素数。显然有d?1??=1,且对于n>1有d?n??是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<10?... 查看详情

patb1007素数对猜想(20分)(代码片段)

/*1007??êy??2???*/#include<cstdio>constintmaxn=10000001;intprime[maxn]=0;boolp[maxn]=0;intpnum=0;voidFind_prime(intn)for(inti=2;i<=n;i++)if(p[i]==false)prime[pnum++]=i;for(intj=i+i;j&l 查看详情

pta乙级1007素数对猜想(20分)(代码片段)

  1#include<iostream>2#include<cmath>3usingnamespacestd;45boolisprime(inti)6for(intj=2;j<=sqrt(i);++j)7if(i%j==0)8return0;91011return1;1213intmain()14intn=0;15intcount= 查看详情