pat乙级1007(代码片段)

another-7 another-7     2023-04-27     473

关键词:

1007 素数对猜想 (20分)

题目地址:https://pintia.cn/problem-sets/994805260223102976/problems/994805317546655744

技术图片

输入格式:

输入在一行给出正整数N

输出格式:

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

输入样例

20

输出样例

4

我的理解

找到所有的从1到N之间的素数,素数相减差值为2时,素数对个数加1。

  1. 注意1, 2,都是素数的特殊性。
  2. 判断素数时,大于2的偶数都不是素数,可以跳过。
  3. 判断大于2的数n是不是素数时,只需判断能不能被3到根号n整除即可,数学的知识,目前我也不知道为什么。

代码段

#include<iostream>
#include<math.h>
using namespace std;
int main() 
    int number = 0;
    cin >> number;
    int prime[number];
    int index = 0;
    if (number < 3) 
        cout << 0 << endl;
     else 
        // 外层遍历,从1到需要判断的数
        prime[index++] = 1;
        prime[index++] = 2;
        for (int i = 3; i <= number; i += 2) 
            // 如果是除了2 之外的偶数,都不是素数
            if (i > 2 && i % 2 == 0) 
                continue;
            
            bool flag = true;
            // 需要判断i是否为素数的方式,如果有从 3到 (<=)i 的平方根之间的数j,
            // 可以被j整除,则i不是素数 ,
            int upperLimit = sqrt(i);
            for (int j = 3; j <= upperLimit; j++) 
                // 满足整除,不是素数
                if (i % j == 0) 
                    flag = false;
                    break;
                
            
            // 是素数,存储到prime数组中
            if (flag) 
                prime[index++] = i;
            
        
        // 统计相差为2 的素数对
        int primeCounter = 0;
        for (int i = 1; i < index; i++) 
            if (prime[i] - prime[i-1] == 2) 
                primeCounter++;
            
        
        cout << primeCounter << endl;
    
    return 0;

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

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

java1007素数对猜想(20分)pat乙级pat(basiclevel)practice(中文)(代码片段)

你是最棒的前言题目:1007素数对猜想(20分)要点:代码前言学得越多,不会得越多种一颗树的最佳时间是十年前,其次就是现在pat所有题解代码都会陆续上传到Github,请好兄弟们自行下载:https://github.com/233... 查看详情

pat乙级1007(代码片段)

1007素数对猜想(20分)题目地址:https://pintia.cn/problem-sets/994805260223102976/problems/994805317546655744输入格式:输入在一行给出正整数N。输出格式:在一行中输出不超过N的满足猜想的素数对的个数。输入样例20输出样例4我的理解找到所有... 查看详情

[pat乙级]practise1007素数对猜想(代码片段)

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

pat乙级1038(代码片段)

题目链接https://pintia.cn/problem-sets/994805260223102976/problems/994805284092887040题解一这份代码最后一个点会超时//PATBasicLevel1038//https://pintia.cn/problem-sets/994805260223102976/problems/994805284092887040#inclu 查看详情

pat——乙级1016(代码片段)

乙级PAT的1016乙级的题相对比较简单,我也是主要联系写代码的格式,而不是联系算法。1016 部分A+B (15point(s))正整数 A 的“D?A??(为1位整数)部分”定义为由 A 中所有 D?A?? 组成的新整数 P?A??。... 查看详情

pat乙级1003(代码片段)

题目  题目地址:PAT乙级1003 题解  规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意;总之这道题要考虑的东西更多,细节上也要特别注意;  规律:“如果 aPbTc&nb... 查看详情

pat乙级1040有几个pat(25分)(代码片段)

题目地址#include<cstdio>#include<cstring>constintMAXN=100010;constintMOD=1000000007;charstr[MAXN];//字符串intleftNump[MAXN]=0;//每一位左边含p的个数intmain() scanf("%s",str); intlen& 查看详情

pat乙级1045(代码片段)

题目   题目地址:PAT乙级1045 题解   本题的解法比较巧妙,刚开始的试着用暴力求解,果不其然时间超限……   变换思路,既然对于每个元素来说满足的条件是前小后大,那么对数组排序,... 查看详情

pat乙级1017(代码片段)

题目  题目地址:PAT乙级1017 题解  粗看是一道大数除法题,实际上只不过是通过字符数组模拟除法过程,理解之后还是比较简单的;  具体分析一下本题;  因为题设中的除数(n)是一位整数,因... 查看详情

pat乙级1085pat单位排行(25分)(代码片段)

题目地址#include<cstdio>#include<iostream>#include<cmath>#include<map>#include<algorithm>#include<string>#include<vector>usingnamespacestd;structnode intA; intB; 查看详情

pat乙级1033(代码片段)

题目题目地址:https://pintia.cn/problem-sets/994805260223102976/problems/994805288530460672 题解   本题一直有一分的样例点过不了,原因在于用了cin接收输入的字符……   问题在于:如果用cin输入,无法接收无坏键的... 查看详情

pat乙级1014(代码片段)

  本题主要还是考验细致程度,需要把各种情况考虑到、题审清楚1#include<iostream>2#include<string>3usingnamespacestd;45intmain()6stringstr[4];7for(inti=0;i<4;i++)8getline(cin,str[i]);9intstr_1=0,str_2=0;10str_1=str[0 查看详情

pat乙级1019(代码片段)

  本题没有考虑到小于1000的情况,当小于1000的时需要给vector的向量中推入0,直到向量中有四位数字,之后再进行排序并进行相关计算 1#include<iostream>2#include<algorithm>3#include<vector>4#include<cmath>5usingnamespacestd... 查看详情

pat乙级1023(代码片段)

1#include<iostream>2usingnamespacestd;34intmain()5intnum[10]=0;6for(inti=0;i<10;i++)7cin>>num[i];8for(inti=1;i<10;i++)9if(num[i]!=0)10cout<<i;11num[i]--;12break;131415fo 查看详情

pat乙级1013(代码片段)

  还是审题没把范围看清楚,没一次AC  题中m和n都表示第几个素数,范围是10000,所以查询的数组中需要的素数量至少10000,所以需要计算大概2~120000的整数才能查到10000个素数#include<iostream>#include<cmath>#include<vector... 查看详情

乙级(basiclevel)1007(代码片段)

题目描述本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A=B*Q+R成立。输入描述:输入在1行中依次给出A和B,中间以1空格分隔。输出描述:在1行中依次输出Q和R,中间以1空格分隔。输... 查看详情

pat乙级1016(代码片段)

1#include<iostream>2#include<cmath>3usingnamespacestd;45intmain()6inta=0,da=0;7intb=0,db=0;8cin>>a>>da>>b>>db;9intcnta=0,cntb=0;10intchu=a,yu=0;11while(chu>=10) 查看详情