PAT 乙级 -- 1007 -- 素数对猜想
-- PAT 素数 乙级 猜想
2023-09-11 14:14:04 时间
题目简述
让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。
输入格式:每个测试输入包含1个测试用例,给出正整数N。
输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
C++代码样例
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <string.h>
using namespace std;
bool isPrime(int p) //素数判定
{
int i = 0;
for(i=2;i<=sqrt(p);i++)
{
if(p%i==0)
{
return false;
}
}
return true;
}
void setPrime(long (&Prime)[10005], const int N) //按照要求在数组中置素数
{
int p = 1; //素数
int i = 0; //Prime数组序数
while(1)
{
if(isPrime(p))
{
if(p>N)
{
return;
}else{
Prime[i] = p;
i++;
}
}
p++;
}
return;
}
void clacBetPrime(long (&Prime)[10005], long (&betPrime)[10005]) //计算素数数组差值
{
int i = 0, j = 1;
while(Prime[j] != 0)
{
betPrime[i] = Prime[j] - Prime[i];
i++;
j++;
}
return;
}
int main(void)
{
int i=0,j=0;
int N = 0;
int count = 0;
long Prime[10005];
long betPrime[10005];
memset(Prime,0,sizeof(Prime));
memset(betPrime,0,sizeof(betPrime));
scanf("%d",&N);
setPrime(Prime,N);
clacBetPrime(Prime,betPrime);
for(i=0; betPrime[i]!=0; i++)
{
if(betPrime[i] == 2)
{
count++;
}
}
printf("%d",count);
return 0;
}
相关文章
- java基础知识回顾之java Thread类学习(七)--java多线程通信等待唤醒机制(wait和notify,notifyAll)
- Java面向对象基础--类的设计及分析问题的方法---用户登录例子
- 汇编语言--寄存器(cpu工作原理)
- 《大话设计模式》--装饰者模式
- 前端学习 -- Css -- 样式的继承
- Face Alignment by Coarse-to-Fine Shape Searching--解析
- 《Gradle权威指南》--Groovy基础
- 《gradle权威指南》--Gradle入门
- 视频播放器+控制器--封装
- JVM 调优实战--jhat命令使用详解
- RHCE之路--02创建和运行 Ansible 临时命令
- guava学习--Function、Predicate
- 程序猿生存定律--前言:解码程序人生
- 【云原生 | Kubernetes 系列】--Envoy基础路由配置
- 37.第六章 Shell脚本编程高级进阶-- 流程控制和函数(二)
- 8.6 tempfile--临时文件和目录处理
- 质量小议15 -- 催
- ab4d:ab3d:ab2d--ZoomPanel for wpf
- 蓝桥杯嵌入式第四课--定时器