---
# System prepended metadata

title: 19-6：質數個數
tags: [DICE Python]

---

---
title: 19-6：質數個數
lang: zh-tw
tags: DICE Python
---


19-6：質數個數
===

> [name=Chinglin-K]

---

目錄：[Dice 程式教學-Python完整版](https://hackmd.io/@Chinglin-K/Dice-menu)
上一篇：[19-5：質數判斷](https://hackmd.io/@Chinglin-K/Dice-19-5)
下一篇：[19-7：無傳回值函數](https://hackmd.io/@Chinglin-K/Dice-19-7)

---
## 題目
請自訂 countprime() 函式練習。

質數的定義為：除了 1 和它本身之外，沒有別的數可以整除它的。
給一個整數計算它的質數個數，程式可以重複執行直到小於 1 為止。
輸入到小於 2 時結束。
    
輸入範例:
2
3
4
5
6
7
8
9
10
30
40
50
60
1
輸出範例: 
1
2
2
3
3
4
4
4
4
10
12
15
17

    
---

## 程式碼
    
```Python=
def countprime(n):
    num=[]
    for i in range(2,n+1):
        for j in range(2,i): #for...else 如果for沒有被break，則會進入else
            if(i%j==0):
                break
        else:                #else 為 for-loop 的其中一個部份，如果 break 就一併跳出，沒有的話就會執行到
            num.append(i)
    return len(num)

while True:
    n=int(input())
    if(n<2):
        break
    print(countprime(n))

#for...else
#在執行迴圈的過程中都沒有遇到 break ，迴圈結束時，就會執行 else 子句
#遇到 break ，則直接中斷(跳出)迴圈
#遇到 continue ，則會直接執行 else 語句。因為 continue 語句會強制執行下一次的迴圈。(不會打破迴圈)
```
    
---

## 輸出
    
```Python=
```
    
---

目錄：[Dice 程式教學-Python完整版](https://hackmd.io/@Chinglin-K/Dice-menu)
上一篇：[19-5：質數判斷](https://hackmd.io/@Chinglin-K/Dice-19-5)
下一篇：[19-7：無傳回值函數](https://hackmd.io/@Chinglin-K/Dice-19-7)
    
---

:::info

「盡多少本分，得多少本事」😊
:::

---
    
{%hackmd i1nMRrZcTFmTvoF897K9zg %}