C語言 列印100 200之間的素數

2021-07-14 14:20:12 字數 1862 閱讀 9205

編寫乙個c語言程式,要求列印100~200之間的素數

在c語言程式中,我們要想列印100-200之間的素數,首先我們得判斷該數是不是素數.

判斷素數的演算法,有位大神寫過這樣一篇文章,我就不在詳細贅述了。

求質數演算法的n種境界

在此,我僅簡單的總結歸納一下.

境界一:假設要判斷n是否為素數,就從2一直試除到n-1.

境界二:從2開始一直試除到n/2.

境界三:從2開始,然後是3、5、7、9....,一直試除到n/2.

境界四:從2開始一直試除到√n(根號n).

境界五:除以小於n的素數.

ps:境界四與境界五平級

演算法轉程式

因為要從2一直試除到n-1,所以這裡一定要用迴圈進行操作.

一想到迴圈,我們第一時間應該想到的是:迴圈的條件是什麼?

而在本題中,迴圈條件非常明顯,即:迴圈變數小於n.

因此,境界一的**片段如下:

int isprimenumber(unsigned int n)

//讓迴圈變數從2開始,

//當迴圈變數小於n時,進入迴圈,

//每次迴圈後,迴圈變數自增1.

for(i=2;i

與境界一類似,區別僅僅是將迴圈條件改為了n/2

境界二的**片段如下:

int isprimenumber(unsigned int n)

//讓迴圈變數從2開始,

//當迴圈變數小於n/2時,進入迴圈,

//每次迴圈後,迴圈變數自增1.

for(i=2;i

與境界一想比不僅將迴圈條件改為了n/2,迴圈後的調整部分也略有改動.

境界三**如下:

int isprimenumber(unsigned int n)

//讓迴圈變數從2開始,

//當迴圈變數小於n/2時,進入迴圈,

//除了第一次迴圈,迴圈變數自增1之外

//其餘每次迴圈後,迴圈變數都自增2

for(i=2;i

與境界一類似,也僅僅是修改迴圈條件為√n.

境界四**如下:

int isprimenumber(unsigned int n)

//讓迴圈變數從2開始,

//當迴圈變數小於√n時,進入迴圈,

//每次迴圈後,迴圈變數自增1

for(i=2;i<=(int)sqrt(n);i++)

}//如果程式能執行到這裡,

//說明n一定為素數

//返回1

return 1;

}

因為,境界五需要乙個連續的素數序列.(2、3、5、7、11、13...)

而本題要求列印100-200之間的素數.

出於效率,境界**適合本題,因此省略.

最終的**,就以在試除法中,效能相對優越的境界四,來作為核心內容.

完整版**如下:

#include#include//宣告函式 

int isprimenumber(unsigned int n);

int main()

}printf("\n合計共有%d個",count);

return 0;

}int isprimenumber(unsigned int n)

//讓迴圈變數從2開始,

//當迴圈變數小於√n時,進入迴圈,

//每次迴圈後,迴圈變數自增1

for(i=2;i<=(int)sqrt(n);i++)

}//如果程式能執行到這裡,

//說明n一定為素數

//返回1

return 1;

}

最後祝大家一切安好!——高小調

c語言 列印100 200之間的素數

素數的定義 素數又稱質數,乙個大於1的自然數,除了1和它自身外,不能被其他自然數整除。基本思路 在列印素數之前,先要給出100到200之間的數,在不用儲存資料的條件下,使用for迴圈比陣列更節省記憶體空間。定義乙個變數x用來迴圈100到200之間的數,用x除以2到x 1之間的數,如果可以整除,則說明...

C 列印100 200 之間的素數

素數即質數,它是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。步驟分析 1.設定100到200的變數num迴圈 2.在迴圈體中,不斷對這個數,針對 1,num 區間取餘,即num 2 num num 1 也可以對區間2到sqrt num 進行取餘,前閉後閉 3.如果取餘結果出現0,...

列印100 200 之間的素數

素數又稱為質數。乙個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做質數 否則稱為合數。素數的求解方法有兩種 1 只需要用其去取餘1 它本身,如果只有一和它本身可以取餘,n那麼他就是素數。include includeint main 如果從2到比他小一位的數都不能整除,那麼他就是素數...