Вот диаграмма, детализирующая ход вашей программы:
+---+---+-------------------------------------------------------------+
| i | j | Notes |
+---+---+-------------------------------------------------------------+
| 2 | 2 | Nested loop condition is false. Hence, 2 is a prime number. |
| 3 | 2 | 3 is not divisible by 2. Let's keep searching. |
| 3 | 3 | Nested loop condition is false. Hence, 3 is a prime number. |
| 4 | 2 | 4 is divisible by 2. Hence, it's not a prime number. |
| 5 | 2 | 5 is not divisible by 2. Let's keep searching. |
| 5 | 3 | 5 is not divisible by 3. Let's keep searching. |
| 5 | 4 | 5 is not divisible by 4. Let's keep searching. |
| 5 | 5 | Nested loop condition is false. Hence, 5 is a prime number. |
| 6 | 2 | 6 is divisible by 2. Hence, it's not a prime number. |
| 7 | 2 | 7 is not divisible by 2. Let's keep searching. |
| 7 | 3 | 7 is not divisible by 3. Let's keep searching. |
| 7 | 4 | 7 is not divisible by 4. Let's keep searching. |
| 7 | 5 | 7 is not divisible by 5. Let's keep searching. |
| 7 | 6 | 7 is not divisible by 6. Let's keep searching. |
| 7 | 7 | Nested loop condition is false. Hence, 7 is a prime number. |
| 8 | 2 | 8 is divisible by 2. Hence, it's not a prime number. |
| 9 | 2 | 9 is not divisible by 2. Let's keep searching. |
| 9 | 3 | 9 is divisible by 3. Hence, it's not a prime number. |
+---+---+-------------------------------------------------------------+
Надеюсь, это объясняет, почему программа работает, даже если вложенный цикл не выполняется, когда i = 2
и j = 2
.