给定两个数字a和b(1 < = a < = b < = 10^6)。查找a和b之间的所有素数中最频繁的数字。如果频率相同打印最高位。在质数范围内查找最大出现位数
实施例:从1到20,素数是 - 2,3,5,7,11,13,17,19,在这里2,5,9只出现一次,3,7发生两次,和1发生5次。所以结果是1
一个基本做法是:
- 在区间[A,B] - 找到所有素数。
- 取一个计数数组以计算0到9之间的出现次数。
- 对于范围中的所有素数,提取所有数字并相应地在count数组中增加数字的计数。
- 找出从计数阵列最大。
但是这对于大范围说[1,1000000]是低效率的。
有没有做到这一点任何有效的方法?
我不认为你可以做得更好。 – Henry
@Henry不是针对单个查询。但是,如果有多个这样的查询,可以通过预计算来改进幼稚的方法 –
您的基本方法“低效”在什么意义上? –