def findDivisors(n): if(n < 0): raise AssertionError() if(n == 1): return [1] if(n == 2): return [1,2] if(primemath.isPrime(n)): return [1,n] probPrimes = primemath.generatePrimes(etcmath.isqrt(n)) primes = [] for p in probPrimes: if(n%p==0): primes.append(p) primeExp = [0]*len(primes) for p in primes: while(n%p==0): n /= p primeExp[primes.index(p)] += 1 primeExpC = [0]*len(primes) divisors = [1] while(True): i = 0 while(True): primeExpC[i] += 1 if(primeExpC[i] <= primeExp[i]): break primeExpC[i] = 0 i += 1 if(i >= len(primes)): return divisors d = 1 for p in primes: d *= p**primeExpC[primes.index(p)] divisors.append(d)
def findDivisors(n): if (n < 0): raise AssertionError() if (n == 1): return [1] if (n == 2): return [1, 2] if (primemath.isPrime(n)): return [1, n] probPrimes = primemath.generatePrimes(etcmath.isqrt(n)) primes = [] for p in probPrimes: if (n % p == 0): primes.append(p) primeExp = [0] * len(primes) for p in primes: while (n % p == 0): n /= p primeExp[primes.index(p)] += 1 primeExpC = [0] * len(primes) divisors = [1] while (True): i = 0 while (True): primeExpC[i] += 1 if (primeExpC[i] <= primeExp[i]): break primeExpC[i] = 0 i += 1 if (i >= len(primes)): return divisors d = 1 for p in primes: d *= p**primeExpC[primes.index(p)] divisors.append(d)
import nfspolygen import etcmath import primemath import math if __name__ == '__main__': semiprimeSize = 100 n = primemath.generateLargePrime(semiprimeSize/2)*primemath.generateLargePrime(semiprimeSize/2) print "n = %s" % (n) d = 3 (m,nfsPoly) = nfspolygen.generateNFSPoly(n,d) print "Using poly %s, m = %s" % (nfsPoly,m) B = M = etcmath.calculateB(n) print "Using bound %s" % B prefactorBase = primemath.generatePrimes(B) K = (int)(3*math.log(n,10)) # for quadratic characters afBaseFile = open("afbase.txt", "w") rfBaseFile = open("rfbase.txt", "w") print "Generating af and rf bases..." for p in prefactorBase: if(p > B): break rfBaseFile.write(str([m%p,p])+"\n") K += 1 roots = poly.getRootsModPFast(nfsPoly,p) for root in roots: afBaseFile.write(str([root,p])+"\n") K += 1
import nfspolygen import etcmath import primemath import math if __name__ == '__main__': semiprimeSize = 64 n = primemath.generateLargePrime(semiprimeSize/2)*primemath.generateLargePrime(semiprimeSize/2) print "n = %s" % (n) d = 3 (m,nfsPoly) = nfspolygen.generateNFSPoly(n,d) print "Using poly %s, m = %s" % (nfsPoly,m) B = M = etcmath.calculateB(n) print "Using bound %s" % B prefactorBase = primemath.generatePrimes(B) K = (int)(3*math.log(n,10)) # for quadratic characters afBaseFile = open("afbase.txt", "w") rfBaseFile = open("rfbase.txt", "w") print "Generating af and rf bases..." for p in prefactorBase: if(p > B): break rfBaseFile.write(str([m%p,p])+"\n") K += 1 roots = poly.getRootsModPFast(nfsPoly,p) for root in roots: afBaseFile.write(str([root,p])+"\n") K += 1