示例#1
0
def sum_divisors(n, primes): # sum of divisors of n
	if n == 1: return 1
	p, k, m = FACTOR.factor(n, primes)
	return ((p ** (k+1) - 1)//(p - 1)) * sum_divisors(m, primes)
示例#2
0
def divisors(n, primes): # number of divisors of n
	if n == 1: return 1
	p, k, m = FACTOR.factor(n, primes)
	return (1+k) * divisors(m, primes)
示例#3
0
def euler_phi(n, primes): # number of a (1 <= a <= n) such that gcd(a,n) == 1
	if n == 1: return 1
	p, k, m = FACTOR.factor(n, primes)
	return (p ** (k-1)) * (p-1) * euler_phi(m, primes)
示例#4
0
def moebius(n, primes): # (-1)^(number of primes dividing n) if n square-free; 0 otherwise
	if n == 1: return 1
	p, k, m = FACTOR.factor(n, primes)
	return [-1,0][k >= 2] * moebius(m, primes)
示例#5
0
def prime_parity(n, primes): # (-1)^(number of distinct primes dividing n)
	if n == 1: return 1
	p, k, m = FACTOR.factor(n, primes)
	return (-1) * prime_parity(m, primes)