aboutsummaryrefslogtreecommitdiffstats
path: root/largestprime.py
blob: fa39904cbdbd2c1b8a52ca96e44771bc315913ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import PIL, math
import numpy as np
#Problem 3 Largest Prime Factor

###INEFFICIENT METHODS###
#def isPrime(number):
#	if (number <=1):
#		return False
#	for i in range(2,number):
#		if(number%i==0):
#			return False
#	return True

#def prime_factors(number):
	#primes = []
	#for i in range(number, 2, -1):
		#if(number%i==0):
			#if (isPrime(i)):
				#return i
	#return primes



def prime_factors(number):
	primes = []
	if (number <=1):
		return [1]
	a = np.ones(number)
	a[0]=0
	a[1]=0#not prime
	for i in range(2,int(math.ceil(math.sqrt(number)))):
		if(a[i]==1):
			j = i**2 #cross out all the multiples
			while(j < number):
				a[j] = False
				j+=i
	
	for k in range(2, number):
		#is prime		is a factor
		if(a[k]==1) and (number%k==0):
			primes.append(k)
	return primes
	
def lpf(number):
	factor = 2
	while (number > factor):
		if(number % factor == 0):
			number = number/factor
			factor = 2
		else:
			factor +=1
	return factor
			
out = lpf(600851475143)
print out