【发布时间】:2015-09-28 12:34:03
【问题描述】:
给定两个数字 a 和 b (1
示例:从 1 到 20,质数为 - 2、3、5、7、11、13、17、19。这里 2、5、9 只出现一次,3、7 出现两次,1 出现 5次。所以结果是 1。
一种基本方法是:
- 在 [a, b] 范围内 - 查找所有素数。
- 取一个计数数组来计算从 0 到 9 的出现次数。
- 对于范围内的所有素数,提取所有数字并相应地增加计数数组中数字的计数。
- 从计数数组中找出最大值。
但这对于大范围(例如 [1, 1000000])来说效率很低。
有没有什么有效的方法可以做到这一点?
【问题讨论】:
-
我认为你不能做得更好。
-
@Henry 不是针对单个查询。但是,如果有多个这样的查询,可以通过预计算来改进幼稚的方法
-
你的基本方法在什么意义上是“低效的”?
标签: arrays algorithm numbers primes