签到题的理解

链接 签到题


先开e6+5数组线性筛出<=e6的质数,再计算出每个质数对于l,r之间的值的贡献度,先得出不互质的个数,在减去即可。具体筛取从2到sqrt(r)。
A[i]是不互质个数,B[i]是检测在筛选范围中能否筛选全,一开始赋值都为l到r区间的值。筛选时B[i]/=例举质数,而A[i]=A[i]/例举质数(例举质数-1)。*
筛取结束若B[i]!=1说明有因子>=sqrt(r),则特判。(数组前移l单位)
例如 输入 20 30
处理过程
i A[i] B[i]

0 10 5
2 11 11
4 12 3
6 13 13
8 14 7
10 15 15
1 14 7
4 8 1
7 18 1
10 10 5
0 8 1
5 20 1
10 8 1

处理结果
i A[i] B[i]
0 8 1
1 14 7
2 11 11
3 23 23
4 8 1
5 20 1
6 13 13
7 18 1
8 14 7
9 29 29
10 8 1

include<iostream>
#define ll long long
using namespace std;
const int mod = 1e6 + 5;
bool nu[mod];ll a[mod];
ll A[mod], B[mod];ll l, r, ba;
long long ans = 0;
void p()
{int cnt = 0;for (int i = 2;i < mod;i++){if (!nu[i]) a[cnt++] = i;for (int j = 0;j < cnt&&i*a[j]<mod;j++){nu[i * a[j]] = true;if (i % a[j] == 0) break;}}
}
void k()
{int i = 0;while (a[i] * a[i] <= r){ll p = a[i];for (int j = (p - l % p) % p;j <= r - l;j += p){A[j] /= p;A[j] *= (p - 1);while (B[j] % p == 0) B[j] /= p;}i++;}
}
int main()
{p();cin >> l >> r;ba = l;for (ll i = l;i <= r;i++) A[i - ba] = B[i - ba] = i;k();for (int i = 0;i <= r - l;i++){if (B[i] != 1) A[i] /= B[i], A[i] *= (B[i] - 1);ans = (ans + i + l - A[i]) % 666623333;}cout << ans;
}

质数筛+埃氏筛取思想相关推荐

  1. 筛选质数,埃氏筛和欧拉筛(线性筛)

    求len之内的所有的素数 除了比较常用的开根号的求法,还有两种更好的方法,埃氏筛和线性筛.其中埃氏筛更好理解,而线性筛(欧拉筛)不好理解但是更快. 埃氏筛 #include <bits/stdc ...

  2. 【基础数学--埃氏筛】204. 计数质数

    题目描述 给定整数 n ,返回所有小于非负整数 n 的质数的数量 . 示例: 输入:n = 10 输出:4 解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 . 解题思路 概念: ...

  3. 【算法分析与设计】埃氏筛素数算法

    文章目录 素数 埃氏筛 算法思想 时间复杂度 Java编程实现 算法优化 素数 素数也称质数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数. 最基本的质数:2, 3, 5, 7, ...

  4. 埃氏筛与欧拉筛(线性筛)

    目录 一.前言 二.埃氏筛与欧拉筛(线性筛) 1.问题描述 2.基本思路 (1)埃氏筛法 (2)欧拉筛法 三.题例 1.上链接 2.简单思路 3.代码 (1)埃氏筛python版 (2)欧拉筛pyth ...

  5. 素数筛法详解:埃氏筛和欧拉筛

    文章目录 摘要 埃式筛 欧拉筛 超级详细的基础算法和数据结构合集: https://blog.csdn.net/GD_ONE/article/details/104061907 摘要 本文主要介绍埃氏 ...

  6. 数学——埃氏筛与线性筛

    埃氏筛  思想:任意整数的倍数都不是质数.  我们可以从 2 2 2开始,由小到大扫描每一个数,把它的倍数标记为合数.当扫描到一个数时,若它尚未被标记,则它不能被 2 → x − 1 2\to x-1 ...

  7. 素数筛选法(埃氏筛 欧拉筛)

    质数筛选法 文章目录 质数筛选法 前言 一.埃氏筛 O(nloglogn)O(nloglogn)O(nloglogn) 二.欧拉筛O(n)O(n)O(n) 总结 前言 当需要大范围内的素数时,例如1e ...

  8. 经典中的经典之——筛选法求素数(埃氏筛 | 线性筛)

    题目描述 统计小于非负整数n的质数数量 浑水摸鱼之蛮力验证法 直接上代码 bool is_zen(int x) {int i = 2;while (i * i <= x) {if (x % i ...

  9. 信奥日记——数论(快速幂、埃氏筛、欧拉筛)

    文章目录 前情提要 正文 1.快速幂 思路 代码 完整代码(包含取模) 2.埃拉托斯特尼筛法(埃氏筛) 原理 思路 代码 完整代码(求 2 到 n 之间的素数) 3.线性筛 思路 代码 完整代码 前情 ...

  10. 埃氏筛秒素数题(洛谷P5723题题解,Java语言描述)

    题目要求 P5723题目链接 分析 埃氏筛不香吗? 详解埃氏筛 AC代码(Java语言描述) import java.util.Scanner;public class Main {private s ...

最新文章

  1. intellij idea 部署项目的时候 图中application context 写不写有什么关系?有什么作用?...
  2. c语言怎么输出线性表里元素,C语言的世界-线性表
  3. 阿里Java编程规约(集合)
  4. 适合初学者的安卓开源项目_开源世界中初学者的颠簸之旅
  5. 计算机电源插头有哪几种,盘点电连接器常见的使用类型
  6. 例子---PHP与Form表单之一
  7. threejs基础示例
  8. 国际电联秘书长特别代表杨晓雅:2020年全球将接入500亿物联网终端
  9. 316. 去除重复字母
  10. Android之——图片的内存优化
  11. javascript的table 对象 属性 方法
  12. 【图像处理】美图秀秀使用技巧:抠图、透明、改色、教程
  13. 小米官网竖直导航栏html,手把手教你做小米商城顶部导航栏
  14. 肿瘤NGS的常规检测流程
  15. Nature:分离到一种位于原核生物-真核生物“交界”的古菌
  16. c语言程序设计中植树问题,植树问题 (3).doc
  17. PHP正则验证手机号
  18. 第二语言教学的5c标准是哪5c,【英语教学论文】5C标准对大学英语教育的启示探讨(共3451字)...
  19. Python自动生成表情包 斗图再无对手!
  20. lucene和solr第二篇

热门文章

  1. 低版本内核编译奇怪错误
  2. 【单片机开发】OV2640在没有DCMI接口的情况下的STM32驱动
  3. CentOS6.5配置eth0重启报错提示Device eth0 does not seem to be present,delaying initialization 的解决方法
  4. Scrapy爬虫框架入门(一)——阳光政务平台
  5. logout退出登录该用get方法还是post方法?
  6. [10]STM32程序调试方法-STLINK调试和软件调试
  7. Centos设置固定ip
  8. C#使用欧姆龙PLC的Fins协议读写PLC地址(基本封装)
  9. 操作系统介绍,为什么使用虚拟机,虚拟机使用原理透彻解释
  10. 像素字体 pixel font 入门