Ejemplo n.º 1
0
def pfactors(n,primes=[2]):
	factors = []
	for i in primes:
		if(n%i==0):
			while(n%i==0): n/=i
			factors.append(i)
			isprime = isPrime(n)
			if isprime and (not n in factors): factors.append(n)
			if(n==1 or isprime): return factors
			break
	if n!=1:
		for i in xrange(primes[len(primes)-1],n):
			ifprime = True
			for j in primes:
				if i%j==0:
					ifprime = False
					break
			if ifprime:
				if(n%i==0):
					while(n%i==0): n/=i
					factors.append(i)
					isprime = isPrime(n)
					if isprime and (not n in factors): factors.append(n)
					if(n==1 or isprime): return factors
				if(not i in primes): primes.append(i)
	if factors==[]: return [n]

	return factors
Ejemplo n.º 2
0
def lucaslehmer(p):
	if( not isPrime(p) ): return False # p must be prime
	s = 4
	m = (1<<p)-1
	for i in xrange(3,p+1):
		s = ((s*s)-2)%m
	return s==0