def test_SmallPrimes(self): primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 97] for prime in primes: assert (isPrime(prime)) factors = naive_factorization(prime) self.assertEqual(1, len(factors)) self.assertEqual(prime, factors[0])
def test_SmallCompositeNumbers(self): numbers = [4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 49, 121] for n in numbers: assert (not isPrime(n)) factors = naive_factorization(n) self.assertTrue(all(isPrime(factor) for factor in factors)) p = prod(factors) self.assertEqual(n, p)
def test_LargeCompositeNumbers(self): numbers = [30011 * 19457058324883, 1009 * 200003 * 68500657163] self.assertTrue( naive_factorization(numbers[0]) == [30011, 19457058324883]) self.assertTrue( naive_factorization(numbers[1]) == [1009, 200003, 68500657163])
def test_Range(self): for n in range(95000, 100000): r1 = naive_factorization(n) r2 = rho_factorization(n) r2.sort() self.assertTrue(r1 == r2)
def test_LargeCompositeNumbers(self): numbers = [30011 * 30011, 1009 * 200003] self.assertTrue(naive_factorization(numbers[0]) == [30011, 30011]) self.assertTrue(naive_factorization(numbers[1]) == [1009, 200003])
def test_LargePrimeNumbers(self): numbers = [30011, 2**31 - 1, 68500657163] for n in numbers: factors = naive_factorization(n) self.assertEqual(1, len(factors)) self.assertEqual(n, factors[0])
def test_CornerCases(self): numbers = [-2, -1, 0, 1] for n in numbers: factors = naive_factorization(n) self.assertEqual(0, len(factors))