def isPrimeFermat(N): if N % 2 == 0: return False s = 0 d = N-1 while d % 2 == 0: s += 1 d = d // 2 # Now we have N = 1 + 2**s * d for test in xrange(1,25): a = random.randint(1, N-1) # Using modPow is ESSENTIAL (otherwise we get MASSIVE numbers) if nf.modPow(a,d,N) != 1: # Did not pass first test passed = False for j in xrange(s): if nf.modPow(a,d * (2**j),N) == N - 1: passed = True if not passed: return False return True
for i in xrange(2*3*5*7,10**9): nFactors = len(set(pf.factorTrialDivision(i,primeList))) if nFactors == runLength: distinctPrimeRun += 1 if distinctPrimeRun == runLength: print (i-3,i-2,i-1,i) break else: distinctPrimeRun = 0 ##################################################################### # Problem 48 if problem == 48: s = 0 for i in xrange(1,1000): s += nf.modPow(i,i,10**10) print s % (10**10) ##################################################################### # Problem 49 if problem == 49: primeList = pf.sieveEratosthenes(10000) # Find the first 4 digit prime i = 0 while i < len(primeList): if primeList[i] > 1000: startIndex = i break i = i+1