def testFactorizeLargePrimes(self):
    random_obj = intalg.MiniIntRandom(42)
    for ps in ([1073741827, 1152921504606847009],
               [34359738421, 1180591620717411303449],
               [7, 1763668414462081],
               [100003],
               [10000000019],
               [1000000000039],  # Slow but tolerable.
               [10000000019] * 9,
               [1000000007] * 10,
               [1000000007] + [1000000009] * 2 + [1000000021] * 3):
      n = 1
      for p in ps:
        n *= p
      divisors = set()  # All divisors based on ps, except for 1.
      for i in xrange(1, 1 << len(ps)):
        r = 1
        for j in xrange(0, len(ps)):
          if i & (1 << j):
            r *= ps[j]
        divisors.add(r)

      r = intalg.brent(n, random_obj)
      assert r in divisors
      r = intalg.pollard(n, random_obj)
      assert r in divisors
      sps = intalg.finder_slow_factorize(n)
      assert sps == ps, (n, sps, ps)
      sps = intalg.factorize(n)
      assert sps == ps, (n, sps, ps)
Example #2
0
    def testFactorizeLargePrimes(self):
        random_obj = intalg.MiniIntRandom(42)
        for ps in (
            [1073741827, 1152921504606847009],
            [34359738421, 1180591620717411303449],
            [7, 1763668414462081],
            [100003],
            [10000000019],
            [1000000000039],  # Slow but tolerable.
            [10000000019] * 9,
            [1000000007] * 10,
            [1000000007] + [1000000009] * 2 + [1000000021] * 3):
            n = 1
            for p in ps:
                n *= p
            divisors = set()  # All divisors based on ps, except for 1.
            for i in xrange(1, 1 << len(ps)):
                r = 1
                for j in xrange(0, len(ps)):
                    if i & (1 << j):
                        r *= ps[j]
                divisors.add(r)

            r = intalg.brent(n, random_obj)
            assert r in divisors
            r = intalg.pollard(n, random_obj)
            assert r in divisors
            sps = intalg.finder_slow_factorize(n)
            assert sps == ps, (n, sps, ps)
            sps = intalg.factorize(n)
            assert sps == ps, (n, sps, ps)
 def testPollardComposite(self):
   random_obj = intalg.MiniIntRandom(42)
   for n in intalg.yield_composites():
     if n > 100000:
       break
     b = intalg.pollard(n, random_obj)
     assert b > 1
     assert b <= n
     self.assertEquals(0, n % b, (b, n))
Example #4
0
 def testPollardComposite(self):
     random_obj = intalg.MiniIntRandom(42)
     for n in intalg.yield_composites():
         if n > 100000:
             break
         b = intalg.pollard(n, random_obj)
         assert b > 1
         assert b <= n
         self.assertEquals(0, n % b, (b, n))
 def testPollardPrime(self):
   random_obj = intalg.MiniIntRandom(42)
   for n in intalg.primes_upto(100000):
     b = intalg.pollard(n, random_obj)
     self.assertEquals(b, n)
Example #6
0
 def testPollardPrime(self):
     random_obj = intalg.MiniIntRandom(42)
     for n in intalg.primes_upto(100000):
         b = intalg.pollard(n, random_obj)
         self.assertEquals(b, n)