Skip to content

script_14.py - List All Prime Numbers up to N

Code

Python
#!/usr/bin/env python3
"""List all prime numbers up to N"""

n = int(input("Find primes up to: "))

for num in range(2, n + 1):
    is_prime = True
    for i in range(2, int(num**0.5) + 1):
        if num % i == 0:
            is_prime = False
            break
    if is_prime:
        print(num)

Explanation

Line 4: n = int(input("Find primes up to: ")) - n is integer, upper limit for search

Line 6: for num in range(2, n + 1): - Outer loop checks each number from 2 to n - Start at 2 (first prime number, 1 is not prime) - num is the candidate number being tested

Line 7: is_prime = True - Boolean flag reset for each number - Assumption: number is prime until proven otherwise - Reinitialized every outer loop iteration

Line 8: for i in range(2, int(num**0.5) + 1): - Inner loop tests divisibility - num**0.5 is square root of num (float result) - int() converts to integer - Only need to check up to square root (mathematical optimization) - Example: for num=100, only check up to 10 - i are potential divisors to test

Line 9: if num % i == 0: - Tests if i divides num evenly - If true, num is composite (not prime)

Line 10: is_prime = False - Sets flag to False (found a divisor)

Line 11: break - Exits inner loop immediately - No need to keep checking if already found divisor - Performance optimization

Line 12: if is_prime: - After inner loop, check the flag - Indented under outer loop, not inner loop - Only prints if no divisors were found