script_14.py - List All Prime Numbers up to N
Code
#!/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