您的位置:首页 > 其它

找数(线筛,容斥)

2015-08-30 11:08 169 查看
找出第N个最小素因子是P的正整数。

Input

一行两个整数N和P(1<=N,P<=10^9),保证P是素数。

Output

如果结果超过10^9则输出0否则输出这个数。

一看到最小质因子就想到了线筛,每个数只会被其最小质因子筛去。并且只需要筛出p以内的质数。再用p以内的质数去筛,比p小的质数可以筛去不合法的,比p大的质数对我们来说毫无意义。

然而p十分小时,线筛是跑不出来的。

怎么办?

容斥,把p以内的质数搞出来,比如说是a1,a2,a3...a_1,a_2,a_3...(不包括p)

那么二分答案AnsAns

Cnt=ΣAns(P∗aiajak....Jud(Thenumberofa[])),Jud(k)=(kmod2==0?1:−1)Cnt=\Sigma \frac{Ans}{(P*a_ia_ja_k....Jud(Thenumberofa[]))},Jud(k)=( kmod2==0 ? 1 : -1)

根据Cnt值调整Ans
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: