Reputation: 11
def isItPrime(n):
p='true'
if not n==2:
for x in range(2,round(math.sqrt(n))+1):#I'm taking the square root to make the program more efficient, and adding the one so it doesn't create ranges like: range(2,2)
if n%x==0:
p='false'
break
return p
def findPrimes(n):
primes=[]
x=2 #if I change this value to 3 it does find 3 as a prime
while len(primes)<n:
if isItPrime(x)=='true':
primes.append(x)
x+=1
x+=1
return primes
print(isItPrime(3)) #true
print(findPrimes(10)) #[2, 5, 7, 11, 13, 17, 19, 23, 29, 31]
returns: true, [2, 5, 7, 11, 13, 17, 19, 23, 29, 31] I don't know what else to add here but it's not letting me post until I add some more details
Upvotes: 0
Views: 53
Reputation: 943938
if isItPrime(x)=='true': primes.append(x) x+=1 x+=1
2 is a prime so it appends 2 to primes
, then changes x
to 3 then finishes the if
then changes x
to 4. Then starts the loop again.
Thus 3
is skipped.
Don't increment x
inside the if
.
Upvotes: 2