找数(线筛,容斥)

来源:互联网 发布:路由器mac是什么意思 编辑:程序博客网 时间:2024/06/05 18:44

找出第N个最小素因子是P的正整数。

Input

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

Output

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

一看到最小质因子就想到了线筛,每个数只会被其最小质因子筛去。并且只需要筛出p以内的质数。再用p以内的质数去筛,比p小的质数可以筛去不合法的,比p大的质数对我们来说毫无意义。
然而p十分小时,线筛是跑不出来的。
怎么办?
容斥,把p以内的质数搞出来,比如说是a1,a2,a3...(不包括p)
那么二分答案Ans
Cnt=ΣAns(Paiajak....Jud(Thenumberofa[]))Jud(k)=(kmod2==0?1:1)
根据Cnt值调整Ans

0 0