線性篩+快速乘
線性篩
int prime[N]; //素數表下標從1開始
bool mark[N]; //mark[i]==1表示i不是素數
int tot;
void get_list(int n){
mark[1] = 1;
for(int i = 2;i <= n;i ++){
if(!mark[i]) prime[++tot] = i;
for(int j = 1;j<=tot&&prime[j]*i<=n;j ++){
mark[i*prime[j]] = 1;
if (!i%prime[j]) break;
}
}
}
快速乘
inline ll mul(ll a,ll b,ll m){
ll c = a*b-(ll)((long double)a*b/m+0.5)*m;
return c<0 ? c+m : c;
}
相關推薦
線性篩+快速乘
線性篩 int prime[N]; //素數表下標從1開始 bool mark[N]; //mark[i]==1表示i不是素數 int tot; void get_list(int n){ mark[1] = 1; for(int i = 2;i <=
線性篩階乘的逆元
typedef long long LL; const LL mod=1e9+7; const int maxn=3e5+10; const int N=3e5; int jie[maxn],ni[maxn]; void init() { jie[0]=jie[1]=1;
[SDOI2008]沙拉公主的困惑 線性篩_尤拉函式_逆元_快速冪
Code: #include<cstdio> using namespace std; typedef long long ll; const int maxn=10000000+1; long long mod; ll fac[maxn]; ll inv[maxn];
快速線性篩素數
#include<stdio.h> #include<string.h> const int maxn = 1e7+7; bool isprime[maxn]; int prim
【板子】gcd、exgcd、乘法逆元、快速冪、快速乘、篩素數、快速求逆元、組合數
1.gcd int gcd(int a,int b){return b?gcd(b,a%b):a;} 2.擴充套件gcd )extend great common divisor ll exgcd(ll l,ll r,ll &x,ll &
快速篩素數(埃式篩+線性篩+Miller_Rabin演算法)
在CF上做到一道核心是需要篩出1~n所有素數的題目,然後剛好又沒學過,就學習了快速篩素數的辦法,基礎的n根號n的演算法這裡大家每個人都知道吧QAQ,就不講了,好像還是C語言上機說過的題目。 首先給大家介紹一下一個比較簡單的判斷素數的方法: 利用性質:大於等於5的質數一定和
快速線性篩法求素數 (模板+簡單解釋)
首先明確任何合數都能表示成一系列素數的積 第一種易於理解的方法: 注意對1的預處理即可,空間較大 var n,m,x,t :longint; i,j
[模板] gcd、exgcd、乘法逆元、快速冪、快速乘、篩素數、快速求逆元、組合數
1.gcd int gcd(int a,int b){ return b?gcd(b,a%b):a; } 2.擴充套件gcd )extend great common divisor ll exgcd(ll l,ll r,ll &x,ll &
Libreoj #6165. 一道水題 (快速線性篩素數)
題意:求出能整除[1,n]中所有數的最小整數,對100000007取模。(注意是1e8+7!!!) 思路:首先用線性篩篩出[1,n]的所有素數,記為p[i]。答案是對每個p[i],求出最大的p[i]
P3383 【模板】線性篩素數
... right else cst pre left 數據 ret col 題目描述 如題,給定一個範圍N,你需要處理M個某數字是否為質數的詢問(每個數字均在範圍1-N內) 輸入輸出格式 輸入格式: 第一行包含兩個正整數N、M,分別表示查詢的範圍和查詢
【數論線性篩】洛谷P1865 A%B problem
continue 個數 區間 str 輸出 數據 兩個 裸題 n) 題目背景 題目名稱是吸引你點進來的 實際上該題還是很水的 題目描述 區間質數個數 輸入輸出格式 輸入格式: 一行兩個整數 詢問次數n,範圍m 接下來n行,每行兩個整數 l,r 表示區間 輸出格式:
BZOJ 2190 儀仗隊(線性篩歐拉函數)
main efi mat owb scan con ostream ios push_back 簡化題意可知,實際上題目求得是gcd(i,j)=1(i,j<=n)的數對數目。 線性篩出n大小的歐拉表,求和*2+1即可。需要特判1. # include <
【BZOJ2186】[Sdoi2008]沙拉公主的困惑 線性篩素數
printf 兩個 stream 一個 測試 strong 幫助 zoj 編號 【BZOJ2186】[Sdoi2008]沙拉公主的困惑 Description 大富翁國因為通貨膨脹,以及假鈔泛濫,政府決定推出一項新的政策:現有鈔票編號範圍為1到N的階乘,但是,政
歐拉函數線性篩法
style getc string nbsp rim log getchar 線性篩 tchar 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4
線性篩莫比烏斯函數
getch fine 莫比烏斯 clu ace etc fin else str 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #includ
[BZOJ2818] Gcd (數論,歐拉函數,線性篩)
name 歐拉 using pre clu 必須 fast har typedef 題目鏈接:http://www.lydsy.com/JudgeOnline/problem.php?id=2818 必須用線性篩。 1 #include <bits/stdc
線性篩法
模板 cnblogs clas int nbsp code 最小 oid log 模板 1 bool vis[MAXN]; 2 int prime[MAXN/10]; 3 4 void Prime(){ 5 int top=0; 6 for
[zroj 51] [Pendulum] : 線性篩
ntp 一次 兩個 style size cstring cst 更遠 世界 問題描述 Evan 站在巨大的世紀鐘擺前,觀察著鐘擺上方數字的塌縮。他發現,鐘擺每擺動?次,上方的數字就會變成把它分解質因數後每一項的和。例如 12 =2 × 2 × 3,那麽擺動一次後數字變成
【 數學基礎】【素數線性篩法--歐拉篩法模板】【普通篩法的優化】
for ++ 自身 素數 spa prime pri 沒有 大於 質數(素數):指大於1的所有自然數中,除了1和自身,不能被其它自然數整除的數 合數:比1大,但不是素數的數稱為合數,合數除了被1和自身整除,還能被其它數整除 質因數(素因數或質因子):能整除給定正整數的質
XJOI 傳送(線性篩數論函數,dp)
mes col pad img es2017 png cstring char wid 這題就是篩了一個除數函數,沒什麽好說的 #include<cstdio> #include<cstring> #include<cs