Beispiel #1
0
 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})
Beispiel #2
0
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})
Beispiel #3
0
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}
Beispiel #4
0
 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})
Beispiel #5
0
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}
Beispiel #6
0
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)
Beispiel #8
0
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)
Beispiel #9
0
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))
Beispiel #10
0
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()
Beispiel #11
0
    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()
Beispiel #12
0
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)
Beispiel #14
0
    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)
Beispiel #16
0
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
Beispiel #17
0
def test_zero():
    assert factorize(0) == {0: 1}
 def test_zero(self):
     self.assertEqual(factorize(0), {0: 1})
Beispiel #19
0
def test_zero():
    assertEqual(factorize(0), {0: 1})