找到完美的pth根,没有其他任何有效的东西

时间:2018-03-23 20:32:00

标签: algorithm math logic

l r 为给定范围 我们知道 l r 中的数字,以便它可以表示为x ^ p由

给出

floor(powl((long double)r,1.0/(long double)p) - ceil(powl((long double)l,1.0/(long double)p)

现在真正的问题,
我需要 l r x 之间的所有数字,这样只有x的 pth 根存在而没有别的。
例如,在 1 - 20 p = 2 范围内,有效数字为 {4,9}
16在集合中没有出现的原因是因为16可以表示为2 ^ 4。

现在我想对范围执行重复的包含 - 排除原则并找到数字,使得它们只能表示为幂p!

1 个答案:

答案 0 :(得分:0)

使用筛子:

维护一个整数的素数列表,用2²初始化。

迭代

  • 计算下一个整数的平方;

  • 同时,取出列表中最小的元素并将其提升到下一个主要力量;

  • 取决于两者中的最小值,延长列表或更新最小元素;

  • 如果是关系,请优先考虑列表中的元素;

  • 循环。

2^2 (<3^2)
2^3 (<3^2)
2^3 3^2 (<4^2)
2^4 3^2 (=4^2)
2^4 3^2 5^2 (<6^2)
2^4 3^3 5^2 (<6^2)
2^5 3^3 5^2 (<6^2)
2^5 3^3 5^3 (<6^2)
...