给定L和R非常大的数字(10 ^ 18),我如何找到L和R之间的数字计数,使得数字至少有一个从1到N的素数因子。
注意:N可以是MAX 50
答案 0 :(得分:1)
我将只绘制一个方法,而不是详细说明。
如果R-L非常小,最好逐一尝试。
否则使用inclusion exclusion principle:出于解释原因,我只考虑素数2,3和5.确定有多少数可以除以2,3,5(即其中一个素数),6, 10,15(即两个素数)和30(即所有三个素数)。对于除数k
,这约为(R-L)/k
,考虑到边界条件,我们可以得到确切的计数。调用相应的计数c(k)。
现在,至少有一个素数可被整除的数字的总数是:
c(2)+c(3)+c(5)-c(6)-c(10)-c(15)+c(30)