最近,我在招聘挑战中遇到了这个问题:
给定一个区间L, R,我们需要告诉L,R中每一个K在区间L,R中K的个数。
例如L= 3,R=7
对于K= 3,3,7=3 (4,5,7)
K= 4,3,7=3 (3,5,7)
对于K= 5,3,7=4 (3,4,6,7)中的铜数
..。
用我的方法,我在R之前找到素数,然后用它的素数因子,计数互质数,但是我需要更好更有效的方法。提前谢谢。
发布于 2019-11-15 07:21:54
一种办法是:
对于每一个数字K,执行以下步骤:
用inclusion-exclusion原理计算L,R区间中的数,它是D中至少一个数的倍数,这个数表示与K.
中数字的乘积直接在这里计算。
。
注:在第2步中,我们同样可以使用包含排除原理直接计算与K同质的数(然而,我觉得在集合D中计数数的倍数更自然)。这将不再需要步骤3。
https://stackoverflow.com/questions/58870869
复制相似问题