Printing Prime Number Series in Python
To print a series of prime numbers within a specified range, a common approach is to iterate through the range and check if each number is prime. However, the provided code, which attempts to accomplish this, outputs a series of odd numbers instead of prime numbers. Let's examine the issue and find an optimal solution.
The provided code iterates through the range (1, 101) and, for each number, checks divisibility up to the number itself. This is where the error lies. Prime numbers are only divisible by 1 and themselves, so you need to only check numbers from 2 to the number itself.
The corrected code should be as follows:
<code class="python">for num in range(2, 101): prime = True for i in range(2, num): if (num % i == 0): prime = False if prime: print(num)</code>
This revised code initializes a boolean flag prime to True for each number and checks numbers up to the number itself, ensuring proper prime number identification.
Alternatively, a more concise and Pythonic approach would be:
<code class="python">for num in range(2, 101): if all(num % i != 0 for i in range(2, num)): print(num)</code>
This code uses a generator expression within the all() function to determine if the number is divisible by any numbers from 2 to itself, excluding itself. If no such divisors exist, the number is printed as a prime.
For enhanced efficiency, you can only check divisors up to the square root of the number. This is because if a number has a larger factor, it must also have a smaller corresponding factor. The code below incorporates this optimization:
<code class="python">import math for num in range(2, 101): if all(num % i != 0 for i in range(2, int(math.sqrt(num)) + 1)): print(num)</code>
Finally, to further improve the efficiency, you can skip checking even numbers since prime numbers greater than 2 are always odd. The following code reflects this optimization:
<code class="python">import math print(2) for num in range(3, 101, 2): if all(num % i != 0 for i in range(3, int(math.sqrt(num)) + 1, 2)): print(num)</code>
The above is the detailed content of How to Correctly Print Prime Number Series in Python?. For more information, please follow other related articles on the PHP Chinese website!