我遇到了这个算法,想知道它到底是什么,它的调用方式以及在...上使用它的方式。
代码(Python
)是这样的:
def unknown(n):
n = abs(n)
a = 0
t = 2
while t <= n:
if n % t == 0:
a += 1
n /= t
else:
t += 1
return a
这里有一些结果:
0 -> 0
1 -> 0
2 -> 1
3 -> 1
4 -> 2
5 -> 1
6 -> 2
7 -> 1
8 -> 3
9 -> 2
10 -> 2
11 -> 1
12 -> 3
13 -> 1
14 -> 2
15 -> 2
16 -> 4
17 -> 1
18 -> 3
19 -> 1
20 -> 3
30 -> 3
101 -> 1
答案 0 :(得分:4)
蛮力计算n
的素数,每个素数均根据其多重性进行计数。
t
是当前要测试的因子,n % t == 0
仅当n
是t
的整数倍时。如果它是可分割的,则将n
进行除法,然后再次尝试除法(以考虑该因素的多重性);否则,将尝试下一个整数,直到(原始)n
。即使尝试了除非素数的除法运算,也不会歪曲结果,因为所有较低的素数均已被尝试,因此它们永远不会成功。
一个明显的优化方法是通过有效的算法来计算并记住最多的质数,然后尝试一下。
答案 1 :(得分:3)
它正在计算n
的素数。请注意,任何素数都返回1。
答案 2 :(得分:1)
答案 3 :(得分:0)
正在计算数字n的素数
例如 1 = 1×1 = 0,因为1既不是素数也不是复合数
2 = 2×1 => 1
3 = 1×3 => 1
4 = 2×2 => 2
5 = 1×5 => 1
6 = 1×2×3 => 2
7 = 1×7 => 1
8 = 2×2×2 => 3