|
2 | 2 | import math
|
3 | 3 |
|
4 | 4 |
|
5 |
| -def prime_factors(n): |
6 |
| - """Find Prime Factors.""" |
| 5 | +def prime_factors(n: int) -> list: |
| 6 | + """Find Prime Factors. |
| 7 | + >>> prime_factors(100) |
| 8 | + [2, 2, 5, 5] |
| 9 | + """ |
7 | 10 | pf = []
|
8 | 11 | while n % 2 == 0:
|
9 | 12 | pf.append(2)
|
10 | 13 | n = int(n / 2)
|
11 |
| - |
12 | 14 | for i in range(3, int(math.sqrt(n)) + 1, 2):
|
13 | 15 | while n % i == 0:
|
14 | 16 | pf.append(i)
|
15 | 17 | n = int(n / i)
|
16 |
| - |
17 | 18 | if n > 2:
|
18 | 19 | pf.append(n)
|
19 |
| - |
20 | 20 | return pf
|
21 | 21 |
|
22 | 22 |
|
23 |
| -def number_of_divisors(n): |
24 |
| - """Calculate Number of Divisors of an Integer.""" |
| 23 | +def number_of_divisors(n: int) -> int: |
| 24 | + """Calculate Number of Divisors of an Integer. |
| 25 | + >>> number_of_divisors(100) |
| 26 | + 9 |
| 27 | + """ |
25 | 28 | div = 1
|
26 |
| - |
27 | 29 | temp = 1
|
28 | 30 | while n % 2 == 0:
|
29 | 31 | temp += 1
|
30 | 32 | n = int(n / 2)
|
31 |
| - div = div * (temp) |
32 |
| - |
| 33 | + div *= temp |
33 | 34 | for i in range(3, int(math.sqrt(n)) + 1, 2):
|
34 | 35 | temp = 1
|
35 | 36 | while n % i == 0:
|
36 | 37 | temp += 1
|
37 | 38 | n = int(n / i)
|
38 |
| - div = div * (temp) |
39 |
| - |
| 39 | + div *= temp |
40 | 40 | return div
|
41 | 41 |
|
42 | 42 |
|
43 |
| -def sum_of_divisors(n): |
44 |
| - """Calculate Sum of Divisors.""" |
| 43 | +def sum_of_divisors(n: int) -> int: |
| 44 | + """Calculate Sum of Divisors. |
| 45 | + >>> sum_of_divisors(100) |
| 46 | + 217 |
| 47 | + """ |
45 | 48 | s = 1
|
46 |
| - |
47 | 49 | temp = 1
|
48 | 50 | while n % 2 == 0:
|
49 | 51 | temp += 1
|
50 | 52 | n = int(n / 2)
|
51 | 53 | if temp > 1:
|
52 | 54 | s *= (2 ** temp - 1) / (2 - 1)
|
53 |
| - |
54 | 55 | for i in range(3, int(math.sqrt(n)) + 1, 2):
|
55 | 56 | temp = 1
|
56 | 57 | while n % i == 0:
|
57 | 58 | temp += 1
|
58 | 59 | n = int(n / i)
|
59 | 60 | if temp > 1:
|
60 | 61 | s *= (i ** temp - 1) / (i - 1)
|
61 |
| - |
62 |
| - return s |
| 62 | + return int(s) |
63 | 63 |
|
64 | 64 |
|
65 |
| -def euler_phi(n): |
66 |
| - """Calculte Euler's Phi Function.""" |
| 65 | +def euler_phi(n: int) -> int: |
| 66 | + """Calculte Euler's Phi Function. |
| 67 | + >>> euler_phi(100) |
| 68 | + 40 |
| 69 | + """ |
67 | 70 | l = prime_factors(n)
|
68 | 71 | l = set(l)
|
69 | 72 | s = n
|
70 | 73 | for x in l:
|
71 | 74 | s *= (x - 1) / x
|
72 |
| - return s |
| 75 | + return int(s) |
73 | 76 |
|
74 | 77 |
|
75 |
| -def main(): |
76 |
| - """Print the Results of Basic Math Operations.""" |
| 78 | +if __name__ == "__main__": |
77 | 79 | print(prime_factors(100))
|
78 | 80 | print(number_of_divisors(100))
|
79 | 81 | print(sum_of_divisors(100))
|
80 | 82 | print(euler_phi(100))
|
81 |
| - |
82 |
| - |
83 |
| -if __name__ == "__main__": |
84 |
| - main() |
0 commit comments