简介:许多朋友询问有关欧拉筛子的数据的问题。本文的首席执行官注释将为您提供详细的答案,以供您参考。我希望这对每个人都会有所帮助!让我们一起看看!
通常建议给予下一次限制和数据范围。
以下是解决问题的想法:
Yichi知道F(X)仅与X本身有关。您可以知道f(x)是一个略微二甲苯的因素(此定义F(1)不存在)
考虑到我们通常会发现质量数的算法,我们可以通过转换Euler Sieve(埃及筛子)来找到F(X):
由于我们从小数小数中筛选了大数字,因此,当筛分一个数字时,筛子的数量是其最小元素因子,然后可以计算f(x)。
因为只有一个查询,所以我们不必记录每个f(x),并且每次计算f(x)时都可以更新最大值。
复杂性:时间O(R)空间O(R)
扩张:
考虑到间隔中只有一个数字,必须有什至数字。最小元素因子为2,奇数的最小元素因子不小于3。当r为偶数时,f(r)f(r-2)...,间隔x中的奇数数显然f(x)= x/3r/2,那么f(r)= r/2是最大f(x);当r是一个奇怪的数字时,很容易知道f(r-1)f(r-3)...,f(r)= r/3和f(r-1)=(r-1)/2。当r = 3 f(r-1)= f(r)也很容易证明间隔中所有奇数的f(r)f(x),则F(r-1)=(r-1)/2是最大的f(x),答案为1在R3时。
至于其余数字,可以找到试验方法可以找到最小元素因子。
复杂性:最差的时间O(SQRT(R))空间O(1)随机数据期望O(1)空间O(1)
扩展2(实际上,我刚才阅读了错误的问题):
如果[l,r]不是自然界数量的连续子弦,而是给定长度,而不是超过m的顺序,并且有t组查询,则可以参考以下想法:
使用上面的转换和筛选方法查找每个F(x):m较小的S筛选f(x)直接建立阵列映射;M太大也可以在SQRT(M)O(M)O(N)中筛选SQRT(M)素数,以遍历序列以找到最大值,而不是M,然后平衡计划想法(根据M大小选择不同的算法)优化)
其余值的其余部分是标准的RMQ问题,分为块,线,单调队列,ST表等,并且有许多解决方案。
复杂性:
直接映射+ST表:时间O(m+nlogn+t)空间O(m+nlogn)
测试+ST表:时间O(SQRT(M)+SQRT(M)N+NLOGN+T)空间O(SQRT(M)+NLOGN)
原理:质数的倍数不得是质数。
我们可以使用具有长度n+1的数组来存储信息(这种使用其他数组保存信息的方法非常常见且有用)。首先,将所有数字初始化为0(素数),然后数字1 1第一个素数2从素数2的数字标记为1(非prime数),以将所有2个倍数标记为小于n的所有2个倍数;继续该过程,筛选了Prime 3的倍数,直到周期结束为止,标记仍然是标签仍然是标签仍然是标签,标签仍然是标签,标签仍然是标签,标签仍然是标签,标签仍然是标签标签仍处于周期的结尾。0是Prime的数量。
欧拉筛子的原理是确保2至n范围内的金属数量中的每一个都可以独特地分解为其最小质量因子的形式和最大因子的形式。因此,我们列举了2至2至n用作筛子方法中的“最大因素”。如果未将其标记为符号,则首先将其放在平原表中,然后将最大因素乘以元素表中的最小质量因子,并标记获得的数量数。输出就足够了
结论:以上是首席CTO注释引入的Euler Sieve最大数据的全部内容。我希望这对每个人都会有所帮助。如果您仍然想了解有关此信息的更多信息,请记住收集并关注此网站。