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 且对 ...
随机推荐
- c3p0 获取数据源
getDataSourcec3p0Resource private static void f3Resource() throws Exception { Connection conn = getD ...
- ATT&CK实战系列——红队实战(一)
一.环境搭建 1.环境搭建测试 最近想要开始学习内网渗透,搜集了一些教程,准备先实验一个vulnstack靶机,熟悉一下内网渗透操作再学习基础知识. 靶场下载地址:http://vulnstack.q ...
- Python3---常见函数---range()用法
0X01函数说明: python range() 函数可创建一个整数列表,一般用在 for 循环中. 0X02函数语法: range(start,stop[,step]) start: 计数从 sta ...
- 「JLOI2015」战争调度
题目 [内存限制:256 MiB][时间限制:1000 ms] [标准输入输出][题目类型:传统][评测方式:文本比较] 题目描述 脸哥最近来到了一个神奇的王国,王国里的公民每个公民有两个下属或者没有 ...
- linux系统下安装两个或多个tomcat(转)
tomcat不用添加到环境变量中 直接解压两个tomcat 来到第二个tomcat的conf目录下 打开server.xml更改端口: 修改server.xml配置和第一个不同的启动.关闭监听端口 ...
- Linux之网络配置
Linux系统网络设备配置文件在/etc/sysconfig/network-scripts/目录中,可使用Vim编辑器编辑网卡配置文件,来配置网络服务,在RHEL7中,网卡配置文件以前缀ifcfg开 ...
- Spring之byte[]传输
事出原因 某些原因,需要在在服务之间传输文件,想到只有通过Byte数组,或者是Stream传递,遂定下两方法,一个byte,一个inpustream,老样子,upload(@RequestParam( ...
- 实时监听input输入的变化(兼容主流浏览器)
遇到如此需求,首先想到的是change事件,但用过change的都知道只有在input失去焦点时才会触发,并不能满足实时监测的需求,比如监测用户输入字符数. 在经过查阅一番资料后,欣慰的发现firef ...
- WPF学员管理系统
下载
- Linux shell 学习随笔2
1.几个重要的快捷键 (1) Tab 命令补齐或文件补齐 vtas@vtas-computer:~$ ca[tab][tab] cal calibrate_ppa canberra-gtk-play ...