I don’t know what is wrong. I am trying to find largest prime factor
JavaScript
x
28
28
1
import math
2
def getfactor(num):
3
factors = []
4
for i in range(2,int((math.sqrt(num)))+1):
5
if num % i == 0:
6
factors.append(i)
7
8
return factors
9
10
def determineprime(num):
11
factor = []
12
for i in range(2,num + 1):
13
if num % i == 0:
14
factor.append(i)
15
if len(factor) == 1:
16
return True
17
else:
18
return False
19
20
factors = getfactor(600851475143)
21
primes = []
22
print(factors)
23
for i in factors:
24
determineprime(i)
25
if i:
26
primes.append(i)
27
print(primes[-1])
28
Advertisement
Answer
Change:
JavaScript
1
4
1
determineprime(i)
2
if i:
3
primes.append(i)
4
to:
JavaScript
1
3
1
if determineprime(i):
2
primes.append(i)
3
The original version was calling determineprime(i)
, discarding the result, and always appending i
to primes
. The corrected version will only append i
to primes
if determineprime(i)
returns true.
Update: As Mark Tolonen pointed out, getfactor
will return an empty list if its argument is prime. In that case, the number itself should be returned as the sole element of the list. It can just check to see if the list is empty before returning, and if so, append the number itself, since it must be prime in that case.