转跳点:

  日常水题,虽然要期中考试了,但提还是要水的,一共95题,早晚能水完。来来来,看题!

  到目前为止,我发现乙题普遍需求明确。思路也很明确。这道题两种方法。

  第一种:动态查找,从最大或最小的开始查找,并且从第二个素数出现开始,依次与上一个进行比较,从而确定素数对的个数。

 第二种:先算出0~n范围内的所有素数,然后再查找素数对。 

第一种需要快速的检验素数的算法;第二种需要快速的素数表算法

  关于验证素数我专门写了一篇博客转跳点击我——>o(*////▽////*)q

思路大概就这样,下面看一下代码:

第一种:

/**
* @brief 动态计算素数对
* @note 关键点都注释了
* @author 杨文蓁的小迷弟
*/
#include <stdio.h>
#include <math.h>
#define MAX 100000 int main()
{
int n, count = 0;
scanf("%d", &n); int prePrime = 0; // 存放上一个素数 for (int i = n; i > 1; i--)
{
int flag = 1;
for (int j = 2; j <= (int)sqrt(i); j++)
{
if (i % j == 0)
{
flag = 0; // 标记位为0表示当前i不为素数
break;
}
}
if (flag == 1) // 标记位为1表示当前i为素数
{
if (prePrime > 1 && prePrime - i == 2) // 判断相邻两素数之差
{
count++;
}
prePrime = i;
}
}
printf("%d\n", count);
return 0;
}

第一种比较简单,直接贴了

第二种:

 1 #include <stdio.h>
2 #include <string.h>
3 #define MAXN 100010
4
5 /**
6 * @brief Euler筛法
7 * @note 线性打表
8 * @param size: 范围
9 * @author 杨文蓁的小迷弟
10 */
11 int Isprime[MAXN];
12 int Prime[MAXN]; //记录素数
13
14 void Euler_prime(int size);
15
16 int main()
17 {
18 int size, cnt = 0;
19 scanf("%d", &size);
20 Euler_prime(size);
21 for (int i = 0; i < size; i++)
22 {
23 if (2 == Prime[i + 1] - Prime[i])
24 {
25 //printf("Prime[%d] - Prime[%d]\n%d - %d = %d\n", i+1, i, Prime[i+1], Prime[i], Prime[i+1] - Prime[i]);
26 cnt++;
27 }
28 }
29 printf("%d\n", cnt);
30 return 0;
31 }
32
33 void Euler_prime(int size)
34 {
35 int cnt = 0; //记录素数个数
36
37 Isprime[0] = Isprime[1] = 1;
38 for (int i = 2; i <= size; i++)
39 {
40 if (!Isprime[i]) //
41 {
42 Prime[cnt++] = i;
43 }
44 for (int j = 0; j < cnt && i * Prime[j] < size; j++) //在MAXN范围内讲所有已得出的素数的倍数都清除
45 {
46 Isprime[i * Prime[j]] = 1;
47 if (!(i % Prime[j])) //如果被1某个素数整除的话那就意味着被其他素数筛过了,往后就不用继续了
48 {
49 break;
50 }
51 }
52 }
53 }

第二种

  建议试一下第二种,方法当作锻炼。

PAT不易,诸君共勉!

P 1007 素数对猜想的更多相关文章

  1. PAT乙级 1007. 素数对猜想 (20)

    1007. 素数对猜想 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 让我们定义 dn 为:dn = ...

  2. PAT-乙级-1007. 素数对猜想 (20)

    1007. 素数对猜想 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 让我们定义 dn 为:dn = ...

  3. [C++]PAT乙级1007.素数对猜想 (20/20)

    /* 1007. 素数对猜想 (20) 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数.“素数对猜想”认为“存在无穷 ...

  4. PAT 1007 素数对猜想(20)

    1007 素数对猜想(20 分) 让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数.显然有d​1​​=1,且对于n>1有d​n​​是偶数."素 ...

  5. 【PAT】1007. 素数对猜想 (20)

    1007. 素数对猜想 (20) 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数.“素数对猜想”认为“存在无穷多对相 ...

  6. PAT 乙级 1007.素数对猜想 C++/Java

    1007 素数对猜想 (20 分) 题目来源 让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数.显然有d​1​​=1,且对于n>1有d​n​​是偶数.“ ...

  7. PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数

    PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数 ...

  8. PAT (Basic Level) Practice (中文)1007 素数对猜想 (20分)

    1007 素数对猜想 (20分) 让我们定义d​n为:dn = pn+1 − pn,其中p​i是第i个素数.显然有d1 = 1,且对于n > 1有dn是偶数."素数对猜想"认 ...

  9. PAT——1007. 素数对猜想

    让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数.“素数对猜想”认为“存在无穷多对相邻且差为2的素数”. 现给定任意正 ...

  10. PAT (Basic Level) Practise (中文)- 1007. 素数对猜想 (20)

    http://www.patest.cn/contests/pat-b-practise/1007 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对 ...

随机推荐

  1. SpringMvc 初步配置

    spring-aop.jarspring-bean.jarspring-context.jarspring-core.jarspring-web.jarspring-webmvc.jarcommons ...

  2. 本周总结(19年暑假)—— Part1

    日期:2019.7.14 博客期:107 星期日 这几周正在摸索着找寻与大型数据库相关的知识,重装了电脑,配置了虚拟机的环境,继续研究了几下修改器.

  3. CSS相关(1)

    CSS: 字体: 网页默认字体16px; 网站通用字体大小14px 最小是12px,最大无限大 单位换算:1em=16px 选择器:标签选择器:选择页面中所有指定标签,权重为1 通配符选择器:选择所有 ...

  4. java程序中的经常出现的的异常处理课后总结

    一.JDK中常见的异常情况 1.常见异常总结图 2.java中异常分类 Throwable类有两个直接子类: (1)Exception:出现的问题是可以被捕获的 (2)Error:系统错误,通常由JV ...

  5. 【mysql】mysq8.0新特性

    一.MySQL8.0简介   mysql8.0现在已经发布,2016-09-12第一个DM(development milestone)版本8.0.0发布.新的版本带来很多新功能和新特性,对性能也得到 ...

  6. 【Linux shell】 while read line

    循环中的重定向或许你应该在其他脚本中见过下面的这种写法:while read linedo …done < file刚开始看到这种结构时,很难理解< file是如何与循环配合在一起工作的. ...

  7. AJAX封装数据处理简单操作

    数据的封装处理主要展现在JS中,在页面里面引入封装的JS, "js/ajax.js" 简单封装将get和post方法都写入,get的方法和post的方法依然需要严格区分,包括typ ...

  8. redis-Hash(哈希表)

    Redis hash 是一个string类型的field和value的映射表,它的添加.删除操作都是O(1)(平均).hash特别适用于存储对象,将一个对象存储在hash类型中会占用更少的内存,并且可 ...

  9. android数据的四种存储方式之一——SharedPreference

    除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data ...

  10. os期末复习

    登记之后会发生两个变化:读者数增加(v操作).座位数减少(p操作) 注销之后会发生的变化:读者数减少(p操作).座位数增加(v操作) 必须要清楚释放的是甚麽,以及申请的是甚麽资源(在具体的题目当中) ...