该算法用于什么?

时间:2018-09-06 16:22:38

标签: python algorithm

我遇到了这个算法,想知道它到底是什么,它的调用方式以及在...上使用它的方式。

代码(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

4 个答案:

答案 0 :(得分:4)

蛮力计算n的素数,每个素数均根据其多重性进行计数。

t是当前要测试的因子,n % t == 0仅当nt的整数倍时。如果它是可分割的,则将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