P 1007 素数对猜想
转跳点:
日常水题,虽然要期中考试了,但提还是要水的,一共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 素数对猜想的更多相关文章
- PAT乙级 1007. 素数对猜想 (20)
1007. 素数对猜想 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 让我们定义 dn 为:dn = ...
- PAT-乙级-1007. 素数对猜想 (20)
1007. 素数对猜想 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 让我们定义 dn 为:dn = ...
- [C++]PAT乙级1007.素数对猜想 (20/20)
/* 1007. 素数对猜想 (20) 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数.“素数对猜想”认为“存在无穷 ...
- PAT 1007 素数对猜想(20)
1007 素数对猜想(20 分) 让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数.显然有d1=1,且对于n>1有dn是偶数."素 ...
- 【PAT】1007. 素数对猜想 (20)
1007. 素数对猜想 (20) 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数.“素数对猜想”认为“存在无穷多对相 ...
- PAT 乙级 1007.素数对猜想 C++/Java
1007 素数对猜想 (20 分) 题目来源 让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数.显然有d1=1,且对于n>1有dn是偶数.“ ...
- PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数
PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数 ...
- PAT (Basic Level) Practice (中文)1007 素数对猜想 (20分)
1007 素数对猜想 (20分) 让我们定义dn为:dn = pn+1 − pn,其中pi是第i个素数.显然有d1 = 1,且对于n > 1有dn是偶数."素数对猜想"认 ...
- PAT——1007. 素数对猜想
让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数.“素数对猜想”认为“存在无穷多对相邻且差为2的素数”. 现给定任意正 ...
- PAT (Basic Level) Practise (中文)- 1007. 素数对猜想 (20)
http://www.patest.cn/contests/pat-b-practise/1007 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对 ...
随机推荐
- C++中函数访问数组的方式
在书写C++代码时,往往为了令代码更加简洁高效.提高代码可读性,会对定义的函数有一些特殊的要求:比如不传递不必要的参数,以此来让函数的参数列表尽可能简短. 当一个函数需要访问一个数组元素时,出于上述原 ...
- webservice之实现天气预报
前通过传智的视频自学了webservice的基本使用,也了解到webservice就是一种跨编程语言和跨操作系统平台的远程调用技术. 对于这些理论知识在这里也不再做过多的解释,本次主要就是记录与分享使 ...
- Using Watch Mode
官方文档地址:https://webpack.js.org/guides/development/#using-watch-mode You can instruct webpack to " ...
- Hibernate(九)--N+1问题
1.在利用Hibernate操作数据库的时候,如果在实体类上设置了表的双向关联.这可能会出现Hibernate N+1的问题. 1.1.一对多: 在一方,查找得到了 n 个对象,那么又需要将 n 个对 ...
- Mac brew安装的php修改了php.ini之后如何重启php?
环境:nginx+mysql+php7.2:Mac利用homebrew安装的php7.2 问题:修改了PHP的配置文件,php.ini:服务器是nginx,如何重启PHP? 开启: brew serv ...
- Python - Mro
参考 https://stackoverflow.com/questions/2010692/what-does-mro-do http://python.jobbole.com/85685/ 问题: ...
- Golang 如何交叉编译
Golang 支持交叉编译,即在一个平台上生成另一个平台的可执行程序.方法如下: Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux G ...
- 学习:Android框架
引言 通过前面两篇: Android 开发之旅:环境搭建及HelloWorld Android 开发之旅:HelloWorld项目的目录结构 我 们对android有了个大致的了解,知道如何搭建a ...
- 浏览器的HTML页面展示
当你输入一个url链接发生了什么? 下面的图是上篇文章的改造版本 电脑浏览器输入百度 打开台式电脑或者笔记本中的浏览器(IE,谷歌,360等),访问百度http://www.baidu.com,此时发 ...
- SpringMVC:自定义视图及其执行过程
一:自定义视图 1.自定义一个实现View接口的类,添加@Component注解,将其放入SpringIOC容器 package com.zzj.view; import java.io.PrintW ...