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
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}"
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
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, ))
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))
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])
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])
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))
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
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
import factorize max = 0 for factor in factorize.factorize(600851475143): if factor > max: max = factor print factor print "max: " + str(max)
def test_factorize_12(): assert factorize(12) == [2, 2, 3]
def test_factorize_minus_12(): assert factorize(-12) == [-1, 2, 2, 3]
def test_cubed(): assert_equals(factorize(27), [3, 3, 3])
def test_two(): assert_equals(factorize(2), [2])
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
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, ))
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)
def test_prime(): assert_equals(factorize(5), [5])
# # 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)))
def test_single_factor(): assert_equals(factorize(9), [3, 3])
def test_multi_factor(): assert_equals(factorize(21), [3, 7])
def test_multi_factor_repeats(): assert_equals(factorize(147), [3, 7, 7])
def totient(n): t = n f = factorize.factorize(n, p_list) for (p, r) in f: t = t // p * (p - 1) return t
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)
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
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)
def test_factorize(): assert factorize(99) == {11: 1, 3: 2} assert factorize(90) == {2: 1, 3: 2, 5: 1}
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
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)
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
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, ))