尤拉篩法分解質因數 vijos1156猩猩散步

2021-08-01 14:52:27 字數 1312 閱讀 1266

vijos1156

從前有個人 他沉迷暴力分解質因數

inline void

get(int x,int v)

if(x!=1) cnt[x]+=v;

}

然後他t了

於是他打了一發尤拉篩

又跪了

好吧……是陣列開小了

題意大概就是求高精度c(n,n+m),n,m<=50000

港道理為什麼暴力分解會t的那麼慘

尤拉篩陣列正常後:

害怕,暴力常數這麼大嗎。。。

我也不知道

這題直接乘的話,還要高精度除法,麻煩,而且位數吃不消,所以考慮分解質因數後高精乘低精

我陣列因為re所以是xjb開的不要管我

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define inf 1e9

#define ll long long

#define for(i,j,k) for(int i=j;i<=k;i++)

#define dow(i,j,k) for(int i=k;i>=j;i--)

using

namespace

std;

int n,m,ans[1000001],cnt[100001],pri[20001],tag[20001],tot;

bool bj[20001];

inline

void get(int x,int v)

if(x!=1) cnt[x]+=v;

}inline

void get_pr()

}}inline

void mul(int x)

}inline

void out()

}int main()

線性篩法(尤拉篩法)

嗯在剛剛 沒錯就是在幾分鐘之前 我學會了線性篩法 實在是乙個很好的篩法 正常的篩法,都會對乙個數篩多次 但是尤拉篩法不會 尤拉篩法是用它的最大因數去篩 別跟我說最小質因數,那個很難讓人理解 雖然最小質因數和最大因數是一樣的 我們假設乙個數k,它是t的最大因數 容易知道t是不唯一的 那我們要乘以乙個質...

線性篩法(尤拉篩)

從前有乙個素數篩法叫埃拉託斯特尼篩法,它的思想很簡單,把1 n以內素數的整數倍的數字劃掉,留下的就全是素數,但是它的複雜度是o nlglgn 對於大量不友好資料會跪,於是線性曬登場了。include using namespace std int prime 1100000 primesize,ph...

尤拉計畫003 最大質因數

題目 13195的質數因子有5,7,13和29.600851475143的最大質數因子是多少?根據算術基本定理,任何乙個合數n,都可以被分解為n a1 a2 an a1 a2 an,且ai為質數,1 i n 本題就是要求出an.若能求出a1 最小的因數 則利用除法就能得到a2 a3.an.設這個乘積...