素數篩 唯一分解定理 質因子分解 逆元 尤拉篩

2021-09-29 11:27:49 字數 1815 閱讀 2876

素數篩

n,q<=1e6

如果暴力求素數 根號n=1000 1e9超時

nlogn預處理素數 o(1*q)

#include

using

namespace std;

typedef

long

long ll;

typedef pair pll;

#define mp make_pair

#define pb push_back

#define fi first

#define se second

const

int maxn=

1e6+5;

ll q,a[maxn]

,f,ans,k,n;

string s,t;

bool prime[maxn]

;void

init()

}}intmain()

return0;

}

c(n,2)+…+c(n,n) n<=1e6 快速冪求組合數 =2^n-(n+1) logn

唯一分解定理

#include

using

namespace std;

typedef

long

long ll;

typedef pair pll;

const

int maxn=

1e6+5;

#define mp make_pair

#define pb push_back

#define fi first

#define se second

ll q,a[maxn]

,f,ans,k,n,cnt,c,maxx;

string s,t;

bool prime[maxn]

;//1e14 素因子 17280個 求 n=a*b^p 的最大p 2e5*log1e14=2e5*50=1e7

intmain()

a[c++

]=cnt;}}

if(n!=1)

for(

int i=

0;i) cout

}

逆元問題

n/m %mod =q

n*k%mod=q

/m *k有相同的結果 k為m的逆元

#include

using

namespace std;

typedef

long

long ll;

typedef pair pll;

const

int maxn=

1e6+5;

const ll mod=

1e9+7;

#define mp make_pair

#define pb push_back

#define fi first

#define se second

ll q,k,n,a[maxn]

,f,ans,cnt,maxx;

string s,t;

bool prime[maxn]

;ll quick_pow

(ll a,ll n)

a=a*a%mod;

n>>=1;

}return res;

}ll inv_mod

(ll a,ll p)

intmain()

算術基本定理(唯一分解定理 分解素因子)

include include include include include include include include includeusing namespace std int main printf d a 0 for int i 1 i cnt i printf n return 0...

唯一分解定理

任意乙個大於1的正整數都能表示成若干個質數的乘積,且表示的方法是唯一的。換句話說,乙個數能被唯一地分解成質因數的乘積。因此這個定理又叫做唯一分解定理。c include include include using namespace std int main int num 32 int local...

唯一分解定理

唯一分解定律 又稱為正整數的唯一分解定理,即 每個大於1的自然數均可寫為質數的積,而且這些素因子按大小排列之後,寫法僅有一種方式。當題目有大數相除,求餘數時,精度要求高時.就要運用唯一分解定律 以下唯一分解定律證明 為了真正地證明,分解質因數的方法是唯一的,我們將再次用到反證法。假設存在某些數,它們...