min 25 JZOJ5594 最大真因數

2021-08-17 16:21:33 字數 2398 閱讀 4544

time limits: 2000 ms memory limits: 524288 kb detailed limits downloads

description

乙個合數的真因數是指這個數不包括其本身的所有因數,例如6 的正因數有

1; 2; 3; 6,其中真因數有1; 2; 3。乙個合數的最大真因數則是這個數的所有真因數中最大

的乙個,例如6 的最大真因數為3。

給定正整數l 和r,請你求出l 和r 之間(包括l 和r)所有合數的最大真因數之和。

input

從檔案factor.in 中讀入資料。

輸入共一行,包含兩個正整數l 和r。保證l<=r。

output

輸出到檔案factor.out 中。

輸出共一行,包含乙個整數,表示[l; r] 內所有合數的最大真因數之和。

sample input

1 10

101 1000

180208 975313

339762200 340762189

2500000000 5000000000

sample output

17 163446

151642139152

112318862921546

3094668961678105770

data constraint

l,r<=5*10^9

hint

【樣例1 解釋】

在1 至10 之間的合數有4; 6; 8; 9; 10,它們的最大真因數分別為2; 3; 4; 3; 5,因此最

大真因數之和為2 + 3 + 4 + 3 + 5 = 17

首先肯定先拆成1–l-1,1–r

考慮模擬埃氏篩法:f[i][j]表示當前要篩2–i,已經篩完了前j個質數剩下的數的和

設最後乙個能篩帶質數的數是pt

p

t那麼答案就為∑t

i=1(

f[n]

[i]−

f[n−

1][i

])/p

i ∑i=

1t(f

[n][

i]−f

[n−1

][i]

)/pi

考慮轉移 首先p

2j>

i pj2

>

i時篩不掉任何數,所以此時f[i][j]=f[i][j-1]

否則我們考慮對其可以篩掉的數分解質因數,發現分解後每乙個數對應的質因數組都是大於等於pj的,並且一定有pj,所以f[i][j]=f[i-1][j]-pj*(f[i/pj][j-1]-sum[j-1]),其中sum[x]為前x個質數的和

這樣就相當於強行選了乙個pj,然後減去那個字首和的原因是不能有更小的質因數

發現第一維的範圍是n−

−√n

級別的,因為−√

n

的有n−

−√n

個,對於i>=n−

−√n

,n/i<=n−

−√n

,也就是說最多只有n−

−√n

個可能會用到的i,然後因為第二維是質數所以還可以除乙個log,最後複雜度是n3

/4∗(

1/lo

gn) n3/

4∗(1

/log

n)

的 在實際的實現中,我們可以按照j分層做,隨著j的增長,第一位是遞減的,對於小於n−

−√n

的我們開乙個陣列直接存,大於n−

−√n

的i我們可以儲存n/i,這樣就可以直接轉移了

#include

#include

#include

#include

#include

#define fo(i,a,b) for(i=a;i<=b;i++)

#define ll long long

using

namespace

std;

const

int maxn=4e5+5;

int f[2][maxn];

int st[maxn],tp;

ll go[maxn],s[maxn],sum[maxn];

bool bz[maxn];

int i,j,k,m;

ll l,r,x,y,t1,t2,now,ans;

ll solve(ll x)

fo(j,1,tp)

}ll l=1; now=0;

while (l<=x)

fo(j,1,tp)

}return ans;

}int main()

演算法 Min 25篩

本篇文章中使用的字母 p 指 text p in text 若函式 f x 滿足,f x 是積性函式 f p 可以使用多項式表示。已知 f p 要能在常數級的時間內計算 f p x x in n min 25篩可以在 theta frac 的時間複雜度內計算 f x 的字首和 或者說 theta n...

Min 25 篩學習筆記

資料和 出處 資料2資料3 打死我也不承認參考了yyb的 min 25 篩可以幹嘛?下文中未特殊說明 p 均指質數集合,p i 或 p 指某個具體質數。求一類積性函式 f x 的字首和,需要滿足 f p 可以寫成多項式的形式,或者操作一下可以寫成多項式 如例題 且 f p k 能快速求出。講真學這個...

Min 25 篩 學習筆記

埃氏篩法 整除分塊 這裡有提到 1.問題模型 2.min 25 篩 3.模板題以及模板 有乙個積性函式 f 對於所有質數 p f p 是關於 p 的多項式,f p k 非常容易計算 不一定是關於 p 的多項式 求 sum f i n leq 10 1s 設集合 p 表示素數集合。設 g sum f ...