题意:给定一个数组,求[l,r] 区间,区间里的素数,数组中,能被这个素数整除的个数,再求和。

分析:区间很大,10^9了,找去区间内的素数是不可能的,但是,数组的数很小,而且要能整除区间内的素数,所以,这些很大的素数是没用的,筛出10^7以内的素数就ok了。

怎么算个数呢?

质因数分解,hash一下,再二分区间,应该是很麻烦了,但是网上还有麻烦的,还用到了线段树维护。

简单方式是:

将数组hash,在筛素数的时候,检测hash值,是否有这些数,有的话,记录到这个素数中,也就是说,这个数组中,能被这个素数整除的有s个,然后对s求一个前缀和,问题就转换为一个区间和。

#include <bits/stdc++.h>using namespace std;//10^7以内的素数
const int maxn = 10000000+5;int vis[maxn],g[maxn],s[maxn];int m;
int main(int argc, char const *argv[])
{memset(vis,0,sizeof(vis));memset(g,0,sizeof(g));memset(vis,0,sizeof(vis));int n;scanf("%d",&n);for(int i=0;i<n;i++) {int x;scanf("%d",&x);g[x]++;}for(int i=2;i<maxn;i++) {if(vis[i]) continue;for(int j=i;j<maxn;j+=i) {if(g[j])s[i] +=g[j];vis[j] = 1;}}for(int i=1;i<maxn;i++)s[i] +=s[i-1];int a,b;scanf("%d",&m);for(int i=0;i<m;i++) {scanf("%d%d",&a,&b);if(a>=maxn) a = maxn-1;if(b>=maxn) b = maxn-1;printf("%d\n",s[b]-s[a-1]);}return 0;
}

View Code

转载于:https://www.cnblogs.com/TreeDream/p/7256779.html

Codeforces 385C 线性筛素数相关推荐

  1. [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉

    本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉 题目大意 给定n,m,求在1到n!内与m!互质的 ...

  2. 普及组模板——线性筛素数

    题目:[模板]线性筛素数(洛谷_3383) #include<iostream> #include<cstdio> #include<algorithm> #inc ...

  3. P3383 【模板】线性筛素数

    https://www.luogu.com.cn/problem/P3383 //线性筛法 /* P3383 [模板]线性筛素数 https://www.luogu.com.cn/problem/P3 ...

  4. 牛客3007E-立方数-欧拉线性筛+素数分解+二分

    链接:https://ac.nowcoder.com/acm/contest/3007/E 来源:牛客网 题目描述: 对于给定的正整数 N,求最大的正整数 A,使得存在正整数 B,满足 A3B=N 输 ...

  5. 线性筛素数(欧拉筛)

    欧拉筛是O(n)复杂度的筛素数算法,1秒内埃筛能处理1e6的数据,而1e7的数据就必须用欧拉筛了. 埃筛的基本思想是:素数的倍数一定是合数. 欧拉筛基本思想是:任何数与素数的乘积一定是合数 算法概述: ...

  6. 线性筛素数的实现与证明

    情境 大家应该都知道用nlogn的时间复杂度筛出[1,n]的所有素数,但是当n的范围较大时,这个方法就不奏效了 今天我们谈谈素数的线性筛法,也就是用On的时间复杂度筛出[1,n]的所有素数 解析 nl ...

  7. 【线性筛】线性筛素数

    小目录 链接 题目描述 思路 代码 链接 YbtOJ6-2-1 题目描述 给定一个范围,有 q个询问,每次输出第 k 小的素数. 思路 欧拉筛 代码 #include<iostream> ...

  8. 洛谷 P3383 【模板】线性筛素数

    题目描述 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 输入输出格式 输入格式: 第一行包含两个正整数N.M,分别表示查询的范围和查询的个数. 接下来M行每行 ...

  9. 【Luogu3383】【模板】线性筛素数

    problem 给定一个范围N 回答M个某数字是否为质数的询问(M solution codes #include<iostream> #define maxn 10000010 usin ...

  10. 线性筛法 欧拉筛c语言,[洛谷P3383][模板]线性筛素数-欧拉筛法

    Hibernate Hql 总结 1.from子句 Hibernate中最简单的查询语句的形式如下: from eg.Cat该子句简单的返回eg.Cat类的所有实例. 通常我们不需要使用类的全限定名, ...

最新文章

  1. 大中型企业的天网:Apache Geode
  2. 玩.采草莓_2018
  3. supervisor 重启_Golang HTTP服务平滑重启及升级
  4. php 正则 菜鸟,PHP正则表达式基础入门
  5. java的算法库_利用Java写开源库 覆盖70多种推荐算法
  6. Angular路由里的canActivate用法
  7. 网站能拿到其他网站的cookie_网站能给公司带来哪些好处?
  8. restful web_RESTful Web服务可发现性,第4部分
  9. VUE项目中 获得多个复选框 checkbox 选中的值(jquery)+ 解决 Uncaught TypeError: Cannot read property ‘push‘ of undefine
  10. AngularJS 讲解五, Factory ,Service , Provider
  11. 【转】运维DBA的4大纪律9项注意
  12. 《C程序设计语言》笔记 目录
  13. java面试 bs cs_面试题思考:BS与CS的区别与联系
  14. SAP PI PO XSLT Mapping of Adapter-Specific Message Attributes
  15. 这也敢爬,你离牢饭不远了,爬虫逆向实战案例
  16. 一、线性表的顺序存储和基本运算
  17. mac忘记MySQL本地数据库密码解决办法
  18. Map接口以及那些实现类
  19. 从零开始做一款Unity3D游戏<三>——编写游戏机制
  20. 理解什么是DTO?什么是AutoMapper?

热门文章

  1. UNIX网络编程卷1 时间获取程序server UDP 协议无关
  2. ASP.NET MVC IOC之Unity攻略
  3. C# BackgroundWorker组件学习
  4. IE开发利器-IE10中的F12开发者工具
  5. Mac电脑「空格键」的妙用,原来有这么多功能
  6. Docker 容器十诫
  7. Oracle将Java EE移交Eclipse基金会
  8. SQLLoader2(导入EXCEL或csv格式的文件)
  9. 大牛精心挑选的25个Visual Basic学习资料汇总
  10. Linux 如何查看是否开启journal