編寫乙個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到比他小一位的數都不能整除,那麼他就是素數...