class TestRationalSieve(): def setUp(self): self.n = 187 self.bound = 11 self.factor_base = [2, 3, 5, 7, 11] self.sieve = Sieve(self.n, self.bound, self.factor_base) def test_finds_prime_factors_for_non_primes(self): prime_factors = self.sieve.pfactors(9) assert_equals(2, prime_factors.count(3)) def test_finds_prime_factors_for_primes(self): prime_factors = self.sieve.pfactors(17) assert_equals(1, prime_factors.count(17)) def test_builds_a_list_of_b_smooth_numbers(self): relations = self.sieve.build_relations() first = relations[0] max_pfactor = max(first["z"] + first["zn"]) assert_true(max_pfactor in self.factor_base) def test_returns_false_for_non_even_exponents(self): pfactors = [2, 3, 3, 5] assert_false(self.sieve.even(pfactors)) def test_returns_true_for_even_exponents(self): pfactors = [2, 2, 3, 3] assert_true(self.sieve.even(pfactors)) def test_builds_greatest_common_divisor_with_n(self): relation = {"z": [3, 3], "zn": [2, 2, 7, 7]} gcd = self.sieve.get_gcd(relation) assert_equals(self.n, (gcd[0] * gcd[1]))
def setUp(self): self.n = 187 self.bound = 11 self.factor_base = [2, 3, 5, 7, 11] self.sieve = Sieve(self.n, self.bound, self.factor_base)