Beispiel #1
0
def test_factorize(number):
    if number == 0:
        with pytest.raises(ValueError):
            factorize(number)
    else:
        factors = factorize(number)
        product = 1
        for factor in factors:
            product *= factor
        assert product == number
Beispiel #2
0
def solve(n):
	i = 2*n
	log2 = math.floor(math.log(n, 2))
	minSum = n + log2
	minSol = ()
	while i > minSum:
		factors = factorize.factorize(i)
		if sum(factors) > i:
			i -= 1
			continue
		if len(factors) <= 1:
			i -= 1
			continue
		if len(factors) == 2 and sum(factors) + n - 2 != i:
			i -= 1
			continue
		print i
#		for factor in factors:
#			print "\t" + str(factor)
		if sum(factors) + n - len(factors) == i:
			minSol = min(minSol, i)
			print "\tsolution: " + str(i)
			i -= 1
			continue
		if valid(i, n):
			minSol = min(minSol, i)
			print "\tsolution: " + str(i)
		i -= 1
	print "min: " + str(n) + " => " + str(minSol)
def test_factorize_multiplication_property(n):
    """The product of the integers returned by factorize(n) needs to be n."""
    factors = factorize(n)
    product = 1
    for factor in factors:
        product *= factor
    assert product == n, f"factorize({n}) returned {factors}"
Beispiel #4
0
 def test_simple_numbers(self):
     """ Что для простых чисел 3, 13, 29 возвращается кортеж, содержащий одно данное число. """
     cases = [3, 13, 29]
     for x in cases:
         with self.subTest(x=x):
             result = factorize(x)
             self.assertEqual(result, (x, ))
def factors_count(n, pfactors=[], primes=[2]):
    if pfactors == []:
        pfactors = factorize(n, primes)
    product = 1
    for i in pfactors.keys():
        product *= pfactors[i] + 1
    return product
Beispiel #6
0
 def test_zero_and_one_cases(self):
     """ Что для числа 0 возвращается кортеж (0,), а для числа 1 кортеж (1,) """
     cases = [0, 1]
     for x in cases:
         with self.subTest(x=x):
             result = factorize(x)
             self.assertEqual(result, (x, ))
Beispiel #7
0
 def test_factorize(self):
     for n in range(2, 100):
         product = reduce(lambda r, f: r * (f[0]**f[1]), factorize(n), 1)
         self.assertTrue(
             n == product,
             "{} != {}, i.e. product of its factorization".format(
                 n, product))
Beispiel #8
0
    def test_two_simple_multipliers(self):
        """ Что для чисел 6, 26, 121 возвращаются соответственно кортежи (2, 3), (2, 13) и (11, 11). """
        cases = {6: (2, 3), 26: (2, 13), 121: (11, 11)}

        for x in cases:
            with self.subTest(x=x):
                result = factorize(x)
                self.assertEqual(result, cases[x])
Beispiel #9
0
    def test_many_multipliers(self):
        """ Что для чисел 1001 и 9699690 возвращаются соответственно кортежи (7, 11, 13) и (2, 3, 5, 7, 11, 13, 17,
        19). """
        cases = {1001: (7, 11, 13), 9699690: (2, 3, 5, 7, 11, 13, 17, 19)}

        for x in cases:
            with self.subTest(x=x):
                result = factorize(x)
                self.assertEqual(result, cases[x])
Beispiel #10
0
def rsaDecode(cipherBlocks, e, n):
	factors = factorize.factorize(n) # will be a 2-tuple for RSA
	phi = (factors[0] - 1) * (factors[1] - 1)
	d = modInverse(e, phi)
	plainBlocks = []
	for c in cipherBlocks:
		pb = 1
		for i in range(0, d): # up to but not including the power
			pb = (pb * c) % n
		plainBlocks.append(pb)
	return numConvert(blockToNum(plainBlocks))
Beispiel #11
0
def smallest(bound):
    so_far = 1
    primelist = primes2(1000000)
    primeset = set(primelist)
    for i in xrange(1, len(primeset)):
        # i+2 arbitrarily chosen because it happens to give correct answer
        for n in combinations_with_replacement(primelist[0:i], i+2):
            n = reduce(mul, n)
            den = n-1
            if n in primeset: num = n-1
            else: num = reduce(mul, [(a-1) * a**(len(list(b))-1)
                                     for a,b in groupby(factorize(n), lambda x: x)])

            r = num/float(den)

            so_far = min(so_far, r)
            if so_far == r: print n, bound, r, "%d/%d" % (num,den)

            if r < bound: return n
Beispiel #12
0
def smallest(bound):
    so_far = 1
    primelist = primes2(1000000)
    primeset = set(primelist)
    for i in xrange(1, len(primeset)):
        # i+2 arbitrarily chosen because it happens to give correct answer
        for n in combinations_with_replacement(primelist[0:i], i + 2):
            n = reduce(mul, n)
            den = n - 1
            if n in primeset: num = n - 1
            else:
                num = reduce(mul,
                             [(a - 1) * a**(len(list(b)) - 1)
                              for a, b in groupby(factorize(n), lambda x: x)])

            r = num / float(den)

            so_far = min(so_far, r)
            if so_far == r: print n, bound, r, "%d/%d" % (num, den)

            if r < bound: return n
Beispiel #13
0
import factorize

max = 0
for factor in factorize.factorize(600851475143):
	if factor > max:
		max = factor
	print factor
print "max: " + str(max)
Beispiel #14
0
def test_factorize_12():
    assert factorize(12) == [2, 2, 3]
Beispiel #15
0
def test_factorize_minus_12():
    assert factorize(-12) == [-1, 2, 2, 3]
Beispiel #16
0
def test_cubed():
    assert_equals(factorize(27), [3, 3, 3])
Beispiel #17
0
def test_two():
    assert_equals(factorize(2), [2])
Beispiel #18
0
def sigma(n):
    pfactors = factorize(n)
    product = 1
    for i in pfactors.keys():
        product *= (i ** (pfactors[i] + 1) - 1) / (i - 1)
    return product
def test_factorize(n, expected):
    assert factorize(n) == expected
Beispiel #20
0
 def test_simple_numbers(self):
     test_cases = (3, 13, 29)
     for x in test_cases:
         with self.subTest(x=x):
             self.assertEqual(factorize(x), (x, ))
Beispiel #21
0
 def test_two_simple_multipliers(self):
     test_cases = ((6, (2, 3)), (26, (2, 13)), (121, (11, 11)))
     for x, exp in test_cases:
         with self.subTest(x=x):
             self.assertEqual(factorize(x), exp)
Beispiel #22
0
def test_prime():
    assert_equals(factorize(5), [5])
Beispiel #23
0
#
#	from src/factoriz.c
#
#	void factorize(int)	to	factorize
#	factorize		to	factorizeG
#	factorize		to	factorizeL
#

from factorize import factorize, factorizeG, factorizeL

for i in range(1, 101):
    print("{0:5d} = ".format(i), end="")
    factorize(i)

    print("{0:5d} = ".format(i), end="")
    print(" * ".join(map(str, factorizeG(i))))

    print("{0:5d} = ".format(i), end="")
    print(" * ".join(factorizeG(i, fmt=str)))

    print("{0:5d} = ".format(i), end="")
    print(" * ".join(map(str, factorizeL(i))))

    print("{0:5d} = ".format(i), end="")
    print(" * ".join(factorizeL(i, fmt=str)))
Beispiel #24
0
def test_single_factor():
    assert_equals(factorize(9), [3, 3])
Beispiel #25
0
def test_multi_factor():
    assert_equals(factorize(21), [3, 7])
Beispiel #26
0
def test_multi_factor_repeats():
    assert_equals(factorize(147), [3, 7, 7])
Beispiel #27
0
def totient(n):
    t = n
    f = factorize.factorize(n, p_list)
    for (p, r) in f:
        t = t // p * (p - 1)
    return t
Beispiel #28
0
 def test_many_multipliers(self):
     test_cases = (1001, (7, 11, 13), (9699690, (2, 3, 5, 7, 11, 13, 17,
                                                 19)))
     for x, exp in test_cases:
         with self.subTest(x=x):
             self.assertEqual(factorize(x), exp)
Beispiel #29
0
from factorize import primes, factorize

print(list(primes(5)))
# prints [2, 3, 5, 7, 11]

print(list(primes(limit=100)))
# prints [2, 3, ..., 89, 97]

start = time()
for factor in factorize(2595925957847039):
    print(factor, time() - start)
# prints something like this:
# 38047 0.641836404800415
# 140281 6.760272264480591
# 486377 6.760589838027954
# Factors are generated on the fly, so it takes some time until each of them is
# ready to process
Beispiel #30
0
 def test_wrong_types_raise_exception(self):
     test_cases = (1.5, 'string')
     for x in test_cases:
         with self.subTest(x=x):
             with self.assertRaises(TypeError):
                 factorize(x)
Beispiel #31
0
def test_factorize():
    assert factorize(99) == {11: 1, 3: 2}
    assert factorize(90) == {2: 1, 3: 2, 5: 1}
Beispiel #32
0
from pandas import DataFrame
import retrieve_data, grapher, subset, factorize, neural.solve
from keras.utils import to_categorical
# datavoter = retrieve_data.getData("./data/ncvoter_Statewide.txt", "./data/ncvoter_Statewide.pickle",
#     filt=['county_desc', 'status_cd', 'voter_status_desc', 'reason_cd', 'voter_status_reason_desc',
#         'mail_city', 'ethnic_code', 'party_cd', 'gender_code', 'birth_age', 'birth_state', 'drivers_lic',
#         'precinct_abbrv', 'municipality_abbrv', 'cong_dist_abbrv', 'super_court_abbrv',
#         'judic_dist_abbrv', 'nc_senate_abbrv', 'nc_house_abbrv',
#         'munic_dist_abbrv', 'dist_1_abbrv', 'birth_year', 'vtd_abbrv'])
filt = [
    'county_id', 'birth_age', 'party_cd', 'gender_code', 'race_code',
    'birth_state'
]
datavoter = factorize.factorize(
    retrieve_data.getData("./data/ncvoter_Statewide.txt",
                          "./data/ncvoter_Statewide.pickle",
                          filt=filt))
print("Done!")

parties = [1, 2]

X = datavoter[datavoter.party_cd.isin(parties)][[
    'county_id', 'birth_age', 'gender_code', 'race_code', 'birth_state'
]]
y = datavoter[datavoter.party_cd.isin(parties)]['party_cd'] - 1

print(X, y)

neural.solve.train(X, y)

# this is a dictionary. Key = name. Value = count
Beispiel #33
0
 def test_negative(self):
     test_cases = (-1, -10, -100)
     for x in test_cases:
         with self.subTest(x=x):
             with self.assertRaises(ValueError):
                 factorize(x)
Beispiel #34
0
def test_larger_prime():
    assert_equals(factorize(13), [13])
def coprime_count(n,factors=[],primes=[2]):
	if factors == []:
		factors = factorize(n,primes=primes)
	for i in factors.iterkeys():
		n = int(n*(1-1.0/i))
	return n
Beispiel #36
0
 def test_zero_and_one_cases(self):
     test_cases = (0, 1)
     for x in test_cases:
         with self.subTest(x=x):
             self.assertEqual(factorize(x), (x, ))