import math def primeFactors(n): 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 numberOfDivisors(n): 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): temp = 1 while n % i == 0: temp += 1 n = int(n / i) div = div * (temp) return div def sumOfDivisors(n): 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: temp += 1 n = int(n / i) if temp > 1: s *= (i**temp - 1) / (i - 1) return s def eulerPhi(n): l = primeFactors(n) l = set(l) s = n for x in l: s *= (x - 1)/x return s def main(): print(primeFactors(100)) print(numberOfDivisors(100)) print(sumOfDivisors(100)) print(eulerPhi(100)) if __name__ == '__main__': main()