Skip to content Skip to sidebar Skip to footer

Improve Code To Find Prime Numbers

I wrote this python code about 3 days ago, and I am stuck here, I think it could be better, but I don't know how to improve it. Can you guys please help me? # Function def is_prime

Solution 1:

A good deterministic way to find relatively small prime numbers is to use a sieve.

The mathematical principle behind this technique is the following: to check if a number is prime, it is sufficient to check that it is not divisible by other primes.

import math

defis_prime(n):
    # Prepare our Sieve, for readability we make index match the number by adding 0 and 1
    primes = [False] * 2 + [True] * (n - 1)

    # Remove non-primesfor x inrange(2, int(math.sqrt(n) + 1)):
        if primes[x]:
            primes[2*x::x] = [False] * (n // x - 1)

    return primes[n]

    # Or use the following to return all primes:# return {x for x, is_prime in enumerate(primes) if is_prime}print(is_prime(13)) # True

For reusability your could adapt the above code to return the set of all prime numbers up to n.

Solution 2:

Try the below code, the speed of it is the same as Olivier Melançon's solution:

from math import sqrt; from itertools import count, islice

defis_prime(n):
    return n > 1andall(n%i for i in islice(count(2), int(sqrt(n)-1)))

print(is_prime(5))

Output:

True

Post a Comment for "Improve Code To Find Prime Numbers"