https://www.luogu.org/problemnew/show/P1835
对于40%,对每个数进行最大$O(\sqrt n)$的判断,因为n比较大所以超时。
想到线性筛,然而我们并不能筛到2e9,时间空间都不允许因为2e9素因子最大也到不了50000,我们预处理出2-50000以内的素数,然后对于每一个数,一个一个的出素因子,进行判断,这里放一下代码。
#include
#include
#include
#include
#include
#include
#include
#include
#include
似乎并不是很理想啊,只有90分,那么,我们利用线性筛的思想(用小的素因子来筛大的)。
我们对于每一个质数,最区间内这个数的倍数打上标记,最后统计个数。
然而,你可能会说数据组开不到那么大。
这里我们数组不用开的太大,假设数组为a,那么将l作为数组的第一个元素,这样的话数组最大1000000.
#include
#include
#include
#include
#include
#include