A twin prime is a prime number that is either 2 less or 2 more than another prime number—for example, either member of the twin prime pair (41, 43). In other words, a twin prime is a prime that has a prime gap of two. Sometimes the term twin prime is used for a pair of twin primes; an alternative name for this is prime twin or prime pair. (from wiki https://en.wikipedia.org/wiki/Twin_prime)
Your mission, should you choose to accept it, is to write a function that counts the number of sets of twin primes from 1 to n.
If n is wrapped by twin primes (n-1 == prime && n+1 == prime) then that should also count even though n+1 is outside the range.
Ex n = 10
Twin Primes are (3,5) (5,7) so your function should return 2!
I am trying to complete this challenge, my code seems to work for some values of N but for some it returns answers too small, and when N = 2 it should return 3 (according to challenge tests).
So far I have tried fiddling with the count += system, so for example:
if prime_list[count] + 2 or prime_list[count] - 2 in prime_list: count += 1
but changing this has not solved my issue yet
(I am new)
Here is my code
def prime_finder(n): primes =  for possibleprime in range(2, n + 1): isprime = True for num in range(2, possibleprime): if possibleprime % num == 0: isprime = False if isprime: primes.append(possibleprime) return primes def twin_prime(n): prime_list = prime_finder(n) count = 0 for i in prime_list: if prime_list[count] + 2 or prime_list[count] - 2 in prime_list: count += 1 elif prime_list[count] + 2 and prime_list[count] - 2 in prime_list: count += 2 twin_count = count // 2 return twin_count
i is one of the primes, so you should be adding to
There’s no need to add and subtract, because that will count each pair twice. Just add 2, check if that’s a prime, and return that count, rather than dividing by 2.
def twin_prime(n): prime_list = prime_finder(n) count = 0 for i in prime_list: if i + 2 in prime_list: count += 1 return count