from hypothesis import given from hypothesis import strategies as st from sympy import divisors from sympy.functions.combinatorial.numbers import divisor_sigma, totient from sympy.ntheory.primetest import is_square @given(n=st.integers(1, 10**10)) def test_tau_hypothesis(n): div = divisors(n) tau_n = len(div) assert is_square(n) == (tau_n % 2 == 1) sigmas = [divisor_sigma(i) for i in div] totients = [totient(n // i) for i in div] mul = [a * b for a, b in zip(sigmas, totients)] assert n * tau_n == sum(mul) @given(n=st.integers(1, 10**10)) def test_totient_hypothesis(n): assert totient(n) <= n div = divisors(n) totients = [totient(i) for i in div] assert n == sum(totients)