当前位置: 首页 > news >正文

数与运算-埃氏筛 P1835 素数密度

P1835 素数密度
数与运算-埃氏筛
题目来源-洛谷题库
在这里插入图片描述

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5;
typedef long long LL;
bool is_prime[maxn + 5], check[1000009];//根号n内的质数表和 
vector<long long> p;void init() // 埃氏筛预处理1e5范围内的素数
{is_prime[0] = is_prime[1] = true;for (LL i = 2; i <= maxn; i++){if (!is_prime[i]){p.push_back(i);for (LL j = i * i; j <= maxn; j += i)//每次都从其i*i倍开始 is_prime[j] = true;}}
}int main()
{init();LL l, r;cin >> l >> r;//开始用质数表筛掉l-r区间的合数 for (int i = 0; i < p.size(); i++) {//直接从L-R区间内最小的p[i]的倍数开始筛,//第一种情况:p[i]*p[i]<L(舍去,找>L的 倍数) //第二种情况p[i]*p[i]远大于L-说明L- p[i]*p[i]都是筛过的或者都是质数 LL x = max(p[i] * p[i], (l + p[i] - 1) / p[i] * p[i]);for (LL j = x; j <= r; j += p[i])check[j - l] = true;//通过映射 直接映射:处理 j(对应j-l) 节约空间 }//特判数据是1 的情况 if(l == 1) check[0] = true;int cnt = 0;//计算最终结果 for (int i = l; i <= r; i++){if (!check[i - l])cnt++;}cout << cnt;return 0;
}

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5;
typedef long long LL;
bool is_prime[maxn + 5], check[1000009];//根号n内的质数表和
vector p;

void init() // 埃氏筛预处理1e5范围内的素数
{
is_prime[0] = is_prime[1] = true;

for (LL i = 2; i <= maxn; i++)
{if (!is_prime[i]){p.push_back(i);for (LL j = i * i; j <= maxn; j += i)//每次都从其i*i倍开始 is_prime[j] = true;}
}

}

int main()
{
init();
LL l, r;
cin >> l >> r;
//开始用质数表筛掉l-r区间的合数
for (int i = 0; i < p.size(); i++)
{
//直接从L-R区间内最小的p[i]的倍数开始筛,
//第一种情况:p[i]*p[i]<L(舍去,找>L的 倍数)
//第二种情况p[i]*p[i]远大于L-说明L- p[i]*p[i]都是筛过的或者都是质数
LL x = max(p[i] * p[i], (l + p[i] - 1) / p[i] * p[i]);
for (LL j = x; j <= r; j += p[i])
check[j - l] = true;//通过映射 直接映射:处理 j(对应j-l) 节约空间
}
//特判数据是1 的情况
if(l == 1) check[0] = true;
int cnt = 0;
//计算最终结果
for (int i = l; i <= r; i++)
{
if (!check[i - l])
cnt++;
}
cout << cnt;
return 0;
}

http://www.dtcms.com/a/270198.html

相关文章:

  • go入门 - day1 - 环境搭建
  • Rust 中字符串类型区别解析
  • 10倍处理效率提升!阿里云大数据AI平台发布智能驾驶数据预处理解决方案
  • Tomcat:启用https(Windows)
  • AR/VR 显示画质失真?OAS百叶窗波导案例破难题
  • Spring Cloud 企业项目技术选型
  • Fiddler-关于抓取Android手机包,安装证书后页面加载失败,提示当前证书不可信存在安全风险的问题
  • 力扣-287.寻找重复数
  • Flutter基础(前端教程①-容器和控件位置)
  • 7月5号和6号复习和预习(C++)
  • 初识mysql(一)
  • 论文略读:UniPELT: A Unified Framework for Parameter-Efficient Language Model Tuning
  • 无人机报警器探测模块技术解析
  • HDLBits刷题笔记和一些拓展知识(十一)
  • 中文编程开发工具构件系列介绍——数值比较构件
  • 视频网站弹幕系统简易实现
  • Python语言+pytest框架+allure报告+log日志+yaml文件+mysql断言实现接口自动化框架
  • Android Handler机制与底层原理详解
  • RHA《Unity兼容AndroidStudio打Apk包》
  • 什么是2.5G交换机?
  • 【如何下载网页中的视频】
  • 【HarmonyOS】鸿蒙端云一体化开发入门详解 (一)
  • 零基础 Qt 6 在线安装教程
  • vue前置知识-end
  • 呼叫系统对接智能体能解决哪些问题?
  • exFAT文件系统mp4素材文件变0字节的恢复方法
  • Spring中过滤器和拦截器的区别及具体实现
  • ROS平台上使用C++实现A*算法
  • 3423. 循环数组中相邻元素的最大差值 — day97
  • MySQL 8.0 OCP 1Z0-908 题目解析(23)