Update basic_maths.py (#1517)

* Update basic_maths.py

Add Doctests.

* Update basic_maths.py

* Add a space to fix the doctest
This commit is contained in:
percy07 2019-10-30 02:24:31 +05:30 committed by Christian Clauss
parent 4880e5479a
commit f8e97aa597
2 changed files with 26 additions and 28 deletions

View File

@ -2,55 +2,56 @@
import math
def prime_factors(n):
"""Find Prime Factors."""
def prime_factors(n: int) -> list:
"""Find Prime Factors.
>>> prime_factors(100)
[2, 2, 5, 5]
"""
pf = []
while n % 2 == 0:
pf.append(2)
n = int(n / 2)
for i in range(3, int(math.sqrt(n)) + 1, 2):
while n % i == 0:
pf.append(i)
n = int(n / i)
if n > 2:
pf.append(n)
return pf
def number_of_divisors(n):
"""Calculate Number of Divisors of an Integer."""
def number_of_divisors(n: int) -> int:
"""Calculate Number of Divisors of an Integer.
>>> number_of_divisors(100)
9
"""
div = 1
temp = 1
while n % 2 == 0:
temp += 1
n = int(n / 2)
div = div * (temp)
div *= temp
for i in range(3, int(math.sqrt(n)) + 1, 2):
temp = 1
while n % i == 0:
temp += 1
n = int(n / i)
div = div * (temp)
div *= temp
return div
def sum_of_divisors(n):
"""Calculate Sum of Divisors."""
def sum_of_divisors(n: int) -> int:
"""Calculate Sum of Divisors.
>>> sum_of_divisors(100)
217
"""
s = 1
temp = 1
while n % 2 == 0:
temp += 1
n = int(n / 2)
if temp > 1:
s *= (2 ** temp - 1) / (2 - 1)
for i in range(3, int(math.sqrt(n)) + 1, 2):
temp = 1
while n % i == 0:
@ -58,27 +59,24 @@ def sum_of_divisors(n):
n = int(n / i)
if temp > 1:
s *= (i ** temp - 1) / (i - 1)
return s
return int(s)
def euler_phi(n):
"""Calculte Euler's Phi Function."""
def euler_phi(n: int) -> int:
"""Calculte Euler's Phi Function.
>>> euler_phi(100)
40
"""
l = prime_factors(n)
l = set(l)
s = n
for x in l:
s *= (x - 1) / x
return s
return int(s)
def main():
"""Print the Results of Basic Math Operations."""
if __name__ == "__main__":
print(prime_factors(100))
print(number_of_divisors(100))
print(sum_of_divisors(100))
print(euler_phi(100))
if __name__ == "__main__":
main()

View File

@ -90,7 +90,7 @@ class Perceptron:
>>> data = [[2.0149, 0.6192, 10.9263]]
>>> targets = [-1]
>>> perceptron = Perceptron(data,targets)
>>> perceptron.training() # doctest:+ELLIPSIS
>>> perceptron.training() # doctest: +ELLIPSIS
('\\nEpoch:\\n', ...)
...
>>> perceptron.sort([-0.6508, 0.1097, 4.0009]) # doctest: +ELLIPSIS