【发布时间】:2019-11-15 05:30:12
【问题描述】:
我最近在招聘挑战中遇到了这个问题:
给定一个区间 [L, R] (1
例如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 的素数,然后对于每个 K,通过它的素数,计算互素的数量,但我需要比这更好和更有效的方法。提前致谢。
【问题讨论】:
-
hi pratik ,如果您发布代码的 sn-ps 会更好。每当您发布问题时,请也输入代码
-
哇,这个招聘挑战似乎异常艰难。它需要数学知识。你知道包含排除定理吗?
-
阅读@qwertyman 的回答,它实际上与我的想法非常接近。需要注意的一件事是,对于 10^5)。其次,我们可以使用eratosthenes筛法快速计算出2到10^5之间的所有素因数
-
@PhamTrung 它的变体 the smallest factor sieve 准确地说,它存储数字的最小因子而不是布尔值。
标签: algorithm math data-structures primes