Min25筛求1-n内的素数和
1 //#include <bits/stdc++.h>
2 #include<cstdio>
3 #include<cstring>
4 #include<algorithm>
5 #include<iostream>
6 #include<string>
7 #include<vector>
8 #include<stack>
9 #include<bitset>
10 #include<cstdlib>
11 #include<cmath>
12 #include<set>
13 #include<list>
14 #include<deque>
15 #include<map>
16 #include<queue>
17
18 using namespace std;
19
20 const int N = 1000010;
21
22 typedef long long LL;
23 LL TT,nn,k;
24 namespace Min25 {
25
26 int prime[N], id1[N], id2[N], flag[N], ncnt, m;
27
28 LL g[N], sum[N], a[N], T, n;
29 inline void fff()
30 {
31 for(int i=0;i<=N;i++){
32 prime[i]=0;
33 id1[i]=0;
34 id2[i]=0;
35 flag[i]=0;
36 g[i]=0;
37 sum[i]=0;
38 a[i]=0;
39 }
40 ncnt=0;
41 m=0;
42 T=0;
43 n=0;
44 }
45 inline int ID(LL x) {
46 return x <= T ? id1[x] : id2[n / x];
47 }
48
49 inline LL calc(LL x) {
50 return x * (x + 1) / 2 - 1;
51 }
52
53 inline LL f(LL x) {
54 return x;
55 }
56
57 inline void init() {
58 T = sqrt(n + 0.5);
59 for (int i = 2; i <= T; i++) {
60 if (!flag[i]) prime[++ncnt] = i, sum[ncnt] = sum[ncnt - 1] + i;
61 for (int j = 1; j <= ncnt && i * prime[j] <= T; j++) {
62 flag[i * prime[j]] = 1;
63 if (i % prime[j] == 0) break;
64 }
65 }
66 for (LL l = 1; l <= n; l = n / (n / l) + 1) {
67 a[++m] = n / l;
68 if (a[m] <= T) id1[a[m]] = m; else id2[n / a[m]] = m;
69 g[m] = calc(a[m]);
70 }
71 for (int i = 1; i <= ncnt; i++)
72 for (int j = 1; j <= m && (LL)prime[i] * prime[i] <= a[j]; j++)
73 g[j] = g[j] - (LL)prime[i] * (g[ID(a[j] / prime[i])] - sum[i - 1]);
74 }
75
76 inline LL solve(LL x) {
77 if (x <= 1) return x;
78 return n = x, init(), g[ID(n)];
79 }
80
81 }
82
83 void extend_gcd(LL a,LL b,LL &x,LL &y)
84 {
85 if(b==0) {
86 x=1,y=0;
87 return;
88 }
89 extend_gcd(b,a%b,x,y);
90 LL tmp=x;
91 x=y;
92 y=tmp-(a/b)*y;
93 }
94 LL mod_inverse(LL a,LL m)
95 {
96 LL x,y;
97 extend_gcd(a,m,x,y);
98 return (m+x%m)%m;
99 }
100 /*int main()
101 {
102 LL sum;
103 cin>>TT;
104 while(TT--){
105 sum=0;
106
107 scanf("%lld%lld",&nn,&k);
108 if(nn==1){
109 printf("0\n");
110 }else if(nn==2){
111 printf("6\n");
112 }else{
113 LL a=mod_inverse(2,k);
114 //cout<<a<<endl;
115 sum=(((((nn%k)*(nn%k))%k+(nn*3)%k)%k)*a)%k;
116 //cout<<sum<<endl;
117 Min25::fff();
118 sum=(sum-4+Min25::solve(nn+1))%k;
119 printf("%lld\n",sum%k);
120 }
121 }
122 return 0;
123 }*/
124 int main()
125 {
126 int n;
127 scanf("%d",&n);
128 printf("%d\n",Min25::solve(n));
129 }
Min25筛求1-n内的素数和的更多相关文章
- 问题 1084: 用筛法求之N内的素数。
#include <iostream> #include <cstdio> #include <cstring> #include <string> # ...
- [总结] min-25筛
再不写总结我又会忘掉啊啊啊啊啊啊啊啊啊 这个\(min-25\)筛主要用来求一个积性函数的前缀和,就像这样\[\sum_{i=1}^n f(i)\] 不过这个积性函数要满足两个条件:质数\(p\)的函 ...
- loj#6235. 区间素数个数(min25筛)
题意 题目链接 Sol min25筛的板子题,直接筛出\(g(N, \infty)\)即可 筛的时候有很多trick,比如只存\(\frac{N}{x}\)的值,第二维可以滚动数组滚动掉 #inclu ...
- hdu6607 min25筛+杜教筛+伯努利数求k次方前缀和
推导过程类似https://www.cnblogs.com/acjiumeng/p/9742073.html 前面部分min25筛,后面部分杜教筛,预处理min25筛需要伯努利数 //#pragma ...
- BZOJ-5244 最大真因数(min25筛)
题意:一个数的真因数指不包括其本身的所有因数,给定L,R,求这个区间的所有数的最大真因数之和. 思路:min25筛可以求出所有最小因子为p的数的个数,有可以求出最小因子为p的所有数之和. 那么此题就是 ...
- 「学习笔记」Min25筛
「学习笔记」Min25筛 前言 周指导今天模拟赛五分钟秒第一题,十分钟说第二题是 \(\text{Min25}\) 筛板子题,要不是第三题出题人数据范围给错了,周指导十五分钟就 \(\text{AK ...
- min25筛学习总结
前言 杜教筛学了,顺便把min25筛也学了吧= =刚好多校也有一道题需要补. 下面推荐几篇博客,我之后写一点自己的理解就是了. 传送门1 传送门2 传送门3 这几篇写得都还是挺好的,接下来我就写下自己 ...
- CodeForces - 83D:Numbers (数学&递归 - min25筛 )
pro:给定三个整数L,R,P求[L,R]区间的整数有多少个是以P为最小因子的.L,R,P<2e9; sol: 一: 比较快的做法是,用函数的思想递归. 用solve(N,P)表示求1到N有多少 ...
- Min25筛
Min25筛 我是沙雕... 从yyb博客蒯的 要求:\(\sum_{i=1}^nF(x)\) \(F(x)\)是积性函数. \(Min25\)筛能用的前提:质数处的\(f(p)\)值是关于\(p\) ...
随机推荐
- sql-libs(6) 双引号的报错注入
payload:http://192.168.48.130/sqli-laaess-6/?id=1" and updatexml(1,concat(0x7e,(SELECT schema_n ...
- DB-Engines Ranking : Redis, MongoDB, MySQL
DB-Engines Ranking http://db-engines.com/en/ranking The DB-Engines Ranking ranks database management ...
- pure CSS3 实现三角形icon的方法
pure CSS3 实现三角形icon的方法 border: color+transparent transform : rotate() /rotateZ() ? 使用 实体字符"◆&qu ...
- ts 在Function上创建静态属性和方法
interface IMessage { (value: any): void; success(): void; error(): void; version: string; } const Me ...
- babel 常用操作
astexplorer babel-types code to ast const { parse } = babel; const code = ` for (let k in ${data}) { ...
- 「NGK每日快讯」11.18日NGK公链第15期官方快讯
- Javascript中的事件冒泡与捕获
事件冒泡和事件捕获 起因:今天在封装一个bind函数的时候,发现el.addEventListener函数支持第三个参数,useCapture:是否使用事件捕获,觉得有点模糊 Js事件流 页面的哪一部 ...
- mysql 8.0.18 小白安装教程
1. 下载 官网下载:https://dev.mysql.com/downloads/mysql/ 嫌官网网速慢可以加q群,在群文件里下载: 1.下载第一个download 2.解压在自己建的目录(各 ...
- 使用python编写量子线路打印的简单项目,并使用Sphinx自动化生成API文档
技术背景 该文章一方面从量子线路的打印着手,介绍了一个简单的python量子线路工程.同时基于这个简单的小工程,我们顺带的介绍了python的API文档自动化生成工具Sphinx的基本使用方法. 量子 ...
- Go 去找个对象吧
前言 我的读者中应该大部分都是 Java 从业者,不知道写 Java 这些年是否真的有找到对象? 没找到也没关系,总不能在一棵树上吊死,我们也可以来 Go 这边看看,说不定会有新发现. 开个玩笑,本文 ...