def test_small_negative(self): self.assertEqual(factorize(-1), {-1: 1}) self.assertEqual(factorize(-2), {-1: 1, 2: 1}) self.assertEqual(factorize(-3), {-1: 1, 3: 1}) self.assertEqual(factorize(-4), {-1: 1, 2: 2}) self.assertEqual(factorize(-5), {-1: 1, 5: 1}) self.assertEqual(factorize(-6), {-1: 1, 2: 1, 3: 1}) self.assertEqual(factorize(-7), {-1: 1, 7: 1}) self.assertEqual(factorize(-8), {-1: 1, 2: 3}) self.assertEqual(factorize(-9), {-1: 1, 3: 2}) self.assertEqual(factorize(-10), {-1: 1, 2: 1, 5: 1})
def test_small_negative(): assertEqual(factorize(-1), {-1: 1}) assertEqual(factorize(-2), {-1: 1, 2: 1}) assertEqual(factorize(-3), {-1: 1, 3: 1}) assertEqual(factorize(-4), {-1: 1, 2: 2}) assertEqual(factorize(-5), {-1: 1, 5: 1}) assertEqual(factorize(-6), {-1: 1, 2: 1, 3: 1}) assertEqual(factorize(-7), {-1: 1, 7: 1}) assertEqual(factorize(-8), {-1: 1, 2: 3}) assertEqual(factorize(-9), {-1: 1, 3: 2}) assertEqual(factorize(-10), {-1: 1, 2: 1, 5: 1})
def test_small(): assert factorize(1) == {1: 1} assert factorize(2) == {2: 1} assert factorize(3) == {3: 1} assert factorize(4) == {2: 2} assert factorize(5) == {5: 1} assert factorize(6) == {2: 1, 3: 1} assert factorize(7) == {7: 1} assert factorize(8) == {2: 3} assert factorize(9) == {3: 2} assert factorize(10) == {2: 1, 5: 1}
def test_small(self): self.assertEqual(factorize(1), {1: 1}) self.assertEqual(factorize(2), {2: 1}) self.assertEqual(factorize(3), {3: 1}) self.assertEqual(factorize(4), {2: 2}) self.assertEqual(factorize(5), {5: 1}) self.assertEqual(factorize(6), {2: 1, 3: 1}) self.assertEqual(factorize(7), {7: 1}) self.assertEqual(factorize(8), {2: 3}) self.assertEqual(factorize(9), {3: 2}) self.assertEqual(factorize(10), {2: 1, 5: 1})
def test_small_negative(): assert factorize(-1) == {-1: 1} assert factorize(-2) == {-1: 1, 2: 1} assert factorize(-3) == {-1: 1, 3: 1} assert factorize(-4) == {-1: 1, 2: 2} assert factorize(-5) == {-1: 1, 5: 1} assert factorize(-6) == {-1: 1, 2: 1, 3: 1} assert factorize(-7) == {-1: 1, 7: 1} assert factorize(-8) == {-1: 1, 2: 3} assert factorize(-9) == {-1: 1, 3: 2} assert factorize(-10) == {-1: 1, 2: 1, 5: 1}
def test_small(): assertEqual(factorize(1), {1: 1}) assertEqual(factorize(2), {2: 1}) assertEqual(factorize(3), {3: 1}) assertEqual(factorize(4), {2: 2}) assertEqual(factorize(5), {5: 1}) assertEqual(factorize(6), {2: 1, 3: 1}) assertEqual(factorize(7), {7: 1}) assertEqual(factorize(8), {2: 3}) assertEqual(factorize(9), {3: 2}) assertEqual(factorize(10), {2: 1, 5: 1})
def test_sqrt_composite_all(self): print "\nTesting all residues by small composite modules" for n in [ 10, 30, 50, 99, 100, 655, 1025, 1337, 7 ** 3 * 3, 2 ** 6 * 13, 2 ** 4 * 3 ** 3 * 5, 3 * 3 * 5 * 7, 1024, ]: f = factorize(n) print " Testing %s = %s" % (n, f) for x in xrange(n): a = pow(x, 2, n) is_sqrt = has_sqrtmod(a, f) if is_sqrt: self.check_valid_sqrt_composite(None, a, f) self.check_jacobi(a, n, is_sqrt) self.assertTrue(has_sqrtmod(a, f)) self.check_valid_sqrt_composite(x, a, f)
def test_sqrt_composite_all(): print("\nTesting all residues by small composite modules") ns = [ 10, 30, 50, 99, 100, 655, 1025, 1337, 7**3 * 3, 2**6 * 13, 2**4 * 3**3 * 5, 3 * 3 * 5 * 7, 1024, ] for n in ns: f = factorize(n) print(" Testing %s = %s" % (n, f)) for x in range(n): a = pow(x, 2, n) is_sqrt = has_sqrtmod(a, f) if is_sqrt: check_valid_sqrt_composite(None, a, f) check_jacobi(a, n, is_sqrt) assert has_sqrtmod(a, f) check_valid_sqrt_composite(x, a, f)
def test_errors(): with pytest.raises(TypeError): factorize("1") with pytest.raises(TypeError): factorize(10.3) with pytest.raises(TypeError): factorize(complex(10, 3)) with pytest.raises(TypeError): factorize((2, 3))
def test_samples(): test_lists = [ set([(3, 1), (5, 5), (19, 2), (1993, 1), (37, 1), (2, 4)]), set([(2, 100), (3, 50), (5, 20), (7, 15), (11, 10), (13, 5)]), set([(1993, 5)]), set([(2, 4000)]), ] for primes_list in test_lists: while primes_list: n = reduce(lambda a, b: a * (b[0] ** b[1]), primes_list, 1) primes_list_test = set(sorted(factorize(n).items())) assertEqual(primes_list, primes_list_test) primes_list.pop()
def test_samples(self): test_lists = [ set([(3, 1), (5, 5), (19, 2), (1993, 1), (37, 1), (2, 4)]), set([(2, 100), (3, 50), (5, 20), (7, 15), (11, 10), (13, 5)]), set([(1993, 5)]), set([(2, 4000)]), ] for primes_list in test_lists: while primes_list: n = reduce(lambda a, b: a * (b[0]**b[1]), primes_list, 1) primes_list_test = set(sorted(factorize(n).items())) self.assertEqual(primes_list, primes_list_test) primes_list.pop()
def test_sqrt_composite_rand(): print("\nTesting all residues by random composite modules") for size, ntries in [(2, 2), (3, 3), (5, 10), (7, 20), (10, 20)]: for i in xrange(ntries): n = randint_bits(size) f = factorize(n) print(" Testing %s-bit number: %s..." % (size, str(n)[:32])) for x in xrange(n): a = pow(x, 2, n) is_sqrt = has_sqrtmod(a, f) if is_sqrt: check_valid_sqrt_composite(None, a, f) check_jacobi(a, n, is_sqrt) assertTrue(has_sqrtmod(a, f)) check_valid_sqrt_composite(x, a, f)
def test_sqrt_composite_rand(self): print "\nTesting all residues by random composite modules" for size, ntries in [(2, 2), (3, 3), (5, 10), (7, 20), (10, 20)]: for i in xrange(ntries): n = randint_bits(size) f = factorize(n) print " Testing %s-bit number: %s..." % (size, str(n)[:32]) for x in xrange(n): a = pow(x, 2, n) is_sqrt = has_sqrtmod(a, f) if is_sqrt: self.check_valid_sqrt_composite(None, a, f) self.check_jacobi(a, n, is_sqrt) self.assertTrue(has_sqrtmod(a, f)) self.check_valid_sqrt_composite(x, a, f)
def test_sqrt_composite_rand_rand(self): print("\nTesting random residues by random composite modules") for size, ntries in [(10, 20), (20, 20), (24, 20), (30, 20)]: for i in xrange(ntries): n = randint_bits(size) f = factorize(n) print(" Testing %s-bit number: %s..." % (size, str(n)[:32])) for j in xrange(30): x = random.randint(0, n - 1) a = pow(x, 2, n) is_sqrt = has_sqrtmod(a, f) if is_sqrt: self.check_valid_sqrt_composite(None, a, f) self.check_jacobi(a, n, is_sqrt) self.assertTrue(has_sqrtmod(a, f)) self.check_valid_sqrt_composite(x, a, f)
def test_sqrt_composite_all(self): print "\nTesting all residues by small composite modules" for n in [ 10, 30, 50, 99, 100, 655, 1025, 1337, 7**3 * 3, 2**6 * 13, 2**4 * 3**3 * 5, 3 * 3 * 5 * 7, 1024 ]: f = factorize(n) print " Testing %s = %s" % (n, f) for x in xrange(n): a = pow(x, 2, n) is_sqrt = has_sqrtmod(a, f) if is_sqrt: self.check_valid_sqrt_composite(None, a, f) self.check_jacobi(a, n, is_sqrt) self.assertTrue(has_sqrtmod(a, f)) self.check_valid_sqrt_composite(x, a, f)
def test_factorial_mod(): print("\nTesting factorial mod prime powers") for p, max_e in [(2, 8), (3, 4), (5, 3), (7, 3), (11, 2)]: print(" prime %s pow up to %s" % (repr(p), repr(max_e))) for i in range(250): n = random.randint(1, 3000) e = random.randint(1, max_e) my = factorial_mod(n, {p: e}) real = factorial(n) % (p**e) assert my == real print("\nTesting factorial mod small composites") for i in range(150): n = random.randint(1, 8000) x = random.randint(0, n * 2) my = factorial_mod(x, factorize(n)) real = factorial(x) % n assert my == real
def test_zero(): assert factorize(0) == {0: 1}
def test_zero(self): self.assertEqual(factorize(0), {0: 1})
def test_zero(): assertEqual(factorize(0), {0: 1})