Skip to content

Improve Formatting and Code Quality #934

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Jul 2, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 38 additions & 28 deletions maths/basic_maths.py
Original file line number Diff line number Diff line change
@@ -1,74 +1,84 @@
"""Implementation of Basic Math in Python."""
import math

def primeFactors(n):

def prime_factors(n):
"""Find Prime Factors."""
pf = []
while n % 2 == 0:
pf.append(2)
n = int(n / 2)
for i in range(3, int(math.sqrt(n))+1, 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 numberOfDivisors(n):

def number_of_divisors(n):
"""Calculate Number of Divisors of an Integer."""
div = 1

temp = 1
while n % 2 == 0:
temp += 1
n = int(n / 2)
div = div * (temp)
for i in range(3, int(math.sqrt(n))+1, 2):
div = 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)

return div

def sumOfDivisors(n):

def sum_of_divisors(n):
"""Calculate Sum of Divisors."""
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):
s *= (2**temp - 1) / (2 - 1)

for i in range(3, int(math.sqrt(n)) + 1, 2):
temp = 1
while n % i == 0:
temp += 1
n = int(n / i)
if temp > 1:
s *= (i**temp - 1) / (i - 1)

return s

def eulerPhi(n):
l = primeFactors(n)

def euler_phi(n):
"""Calculte Euler's Phi Function."""
l = prime_factors(n)
l = set(l)
s = n
for x in l:
s *= (x - 1)/x
return s
s *= (x - 1) / x
return s


def main():
print(primeFactors(100))
print(numberOfDivisors(100))
print(sumOfDivisors(100))
print(eulerPhi(100))

"""Print the Results of Basic Math Operations."""
print(prime_factors(100))
print(number_of_divisors(100))
print(sum_of_divisors(100))
print(euler_phi(100))


if __name__ == '__main__':
main()


22 changes: 11 additions & 11 deletions maths/factorial_python.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# Python program to find the factorial of a number provided by the user.
"""Python program to find the factorial of a number provided by the user."""

# change the value for a different result
num = 10
NUM = 10

# uncomment to take input from the user
#num = int(input("Enter a number: "))
# num = int(input("Enter a number: "))

factorial = 1
FACTORIAL = 1

# check if the number is negative, positive or zero
if num < 0:
print("Sorry, factorial does not exist for negative numbers")
elif num == 0:
print("The factorial of 0 is 1")
if NUM < 0:
print("Sorry, factorial does not exist for negative numbers")
elif NUM == 0:
print("The factorial of 0 is 1")
else:
for i in range(1,num + 1):
factorial = factorial*i
print("The factorial of",num,"is",factorial)
for i in range(1, NUM + 1):
FACTORIAL = FACTORIAL * i
print("The factorial of", NUM, "is", FACTORIAL)
17 changes: 9 additions & 8 deletions maths/factorial_recursive.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
def fact(n):
"""
Return 1, if n is 1 or below,
otherwise, return n * fact(n-1).
"""
return 1 if n <= 1 else n * fact(n-1)
"""
Return 1, if n is 1 or below,
otherwise, return n * fact(n-1).
"""
return 1 if n <= 1 else n * fact(n - 1)


"""
Shown factorial for i,
Show factorial for i,
where i ranges from 1 to 20.
"""
for i in range(1,21):
print(i, ": ", fact(i), sep='')
for i in range(1, 21):
print(i, ": ", fact(i), sep='')
8 changes: 4 additions & 4 deletions maths/find_lcm.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@

def find_lcm(num_1, num_2):
"""Find the LCM of two numbers."""
max = num_1 if num_1 > num_2 else num_2
lcm = max
while (True):
max_num = num_1 if num_1 > num_2 else num_2
lcm = max_num
while True:
if ((lcm % num_1 == 0) and (lcm % num_2 == 0)):
break
lcm += max
lcm += max_num
return lcm


Expand Down
15 changes: 9 additions & 6 deletions sorts/pancake_sort.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
# Pancake sort algorithm
"""Pancake Sort Algorithm."""
# Only can reverse array from 0 to i


def pancake_sort(arr):
"""Sort Array with Pancake Sort."""
cur = len(arr)
while cur > 1:
# Find the maximum number in arr
mi = arr.index(max(arr[0:cur]))
# Reverse from 0 to mi
arr = arr[mi::-1] + arr[mi+1:len(arr)]
# Reverse whole list
arr = arr[cur-1::-1] + arr[cur:len(arr)]
# Reverse from 0 to mi
arr = arr[mi::-1] + arr[mi + 1:len(arr)]
# Reverse whole list
arr = arr[cur - 1::-1] + arr[cur:len(arr)]
cur -= 1
return arr


if __name__ == '__main__':
print(pancake_sort([0,10,15,3,2,9,14,13]))
print(pancake_sort([0, 10, 15, 3, 2, 9, 14, 13]))