首页
/
每日頭條
/
生活
/
c語言編程100到200之間的素數
c語言編程100到200之間的素數
更新时间:2026-05-17 09:45:14
題目

問:1-100之間有多少個素數,并輸出所有素數及素數的個數。

這個題面就很容易理解了,數學上對素數的定義是這樣的:質數又稱素數,指在一個大于1的自然數中,除了1和此整數自身外,沒法被其他自然數整除的數。

換句話說,隻有兩個正因數(1和自己)的自然數即為素數。比1大但不是素數的數稱為合數。并且1和0既非素數也非合數。

c語言編程100到200之間的素數(C語言經典算法二)1

好了,數學上素數是這樣定義,我們應該把它用計算機的語言表示出來呀。

這裡我們就用一種最簡單的方式來表示:

編程思想:

一個數n,要判斷它是不是素數,直接用n除以2到n裡面所有的數,如果有一個能整除,則這個數n不是素數。如果都不能被整除,則這個數是素數。

上面這句話用代碼寫出來是這樣的:

  1. for(j = 2; j<= n; j ) //能被2到n整除的數

  2. {

  3. if(i % j == 0) //取餘判斷

  4. {

  5. flag = 0;

  6. break;

  7. //隻要有一個被整除,則跳出循環

  8. }

  9. }

c語言編程100到200之間的素數(C語言經典算法二)2

到這裡,我們仔細想想,有必要一直除到n去嗎?答案是沒有必要的,來看一個例子。

比如判斷17是不是素數,我們其實隻需要計算:

17%2

17%3

17%4

隻需要計算以上三個式子,我們就可以斷定,17是一個素數。

為什麼呢?因為數學知識告訴我們:任何一個數都不可能分解成兩個大于其平方根的數的乘積呀,肯定隻能分解為一個大于或等于其平方根,另一個小于或等于其平方根的兩個數相乘。

我們知道,17開根号的值是一個4到5之間的數,取int之後就是4,既然我們已經從2一直取餘取到了4都沒有一個可以整除,那麼就沒有必要繼續計算下去了,因為接下來的數也肯定不能被整除。

我們吧代碼優化一下:

  1. for(j = 2; j<= sqrt(n); j ) //能被2到n的開方根整除的數

  2. {

  3. if(i % j == 0)

  4. {

  5. flag = 0;

  6. break;

  7. }

  8. }

好了,這樣子你能明顯感受到我們一下子減少了很多計算量,時間複雜度降低了。

c語言編程100到200之間的素數(C語言經典算法二)3

完整代碼

以上是知道一個數,判斷它是不是素數,這裡我們要做的是輸出1-100内所有的素數,那麼就要有一個雙重for循環,一個數一個數地去判斷,然後輸出素數。

這裡給出完整代碼:

  1. //輸出1-100的所有素數

  2. void Prime()

  3. {

  4. int i,j,flag,n;

  5. n = 100; //100以内的素數

  6. flag = 1; //标識變量,是素數則為1

  7. for(i = 2; i <= 100; i ) //從2開始,遍曆到100

  8. {

  9. flag = 1;

  10. for(j = 2; j*j <= i; j ) //能被2 - sqrt(i)整除的數

  11. {

  12. if(i % j == 0)

  13. {

  14. flag = 0;

  15. break;

  16. }

  17. }

  18. if(flag == 1)

  19. printf("%d ",i); //輸出素數

  20. }

  21. }

c語言編程100到200之間的素數(C語言經典算法二)4

與素數有關的猜想

關于求素數,上面的方法是一個最最直接的方法,初學者知道這種方法就可以了。

但其實還有很多比這種方法時間複雜度更低的方法,如果想更進一步探索程序的簡潔和美妙,我明天會整理發出來給大家參考一下。

這裡分享幾個很有意思的猜想:

哥德巴赫猜想

哥德巴赫猜想(Goldbach Conjecture)大緻可以分為兩個猜想(前者稱“強”或“二重哥德巴赫猜想”後者稱“弱”或“三重哥德巴赫猜想”):1、每個不小于6的偶數都可以表示為兩個奇素數之和;2、每個不小于9的奇數都可以表示為三個奇質數之和。

黎曼猜想

黎曼猜想是一個困擾數學界多年的難題,最早由德國數學家波恩哈德·黎曼提出,迄今為止仍未有人給出一個令人完全信服的合理證明。即如何證明“關于質數的方程的所有意義的解都在一條直線上”。

此條質數之規律内的質數月經過整形,“關于質數的方程的所有意義的解都在一條直線上”化為球體質數分布。

孿生質數猜想

1849年,波林那克提出孿生質數猜想(the conjecture of twin primes),即猜測存在無窮多對孿生質數。

猜想中的“孿生質數”是指一對質數,它們之間相差2。例如3和5,5和7,11和13,10016957和10016959等等都是孿生質數。

10016957和10016959是發生在第333899位序号質數月的中旬[18±1]的孿生質數。

質數月定位孿生質數發生位置:

首個質數月孿生質數發生位置:[T-1]*30 【[4±1] [6±1] [12±1] [18±1] [30±1] 】 T=1

其餘質數月孿生質數發生位置:[T-1]*30 【[0±1] [12±1] [18±1] [30±1] 】 T=N是自然數代表質數月

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
真絲地毯和挂毯的幹洗方法
真絲地毯和挂毯的幹洗方法
真絲毯和挂毯是地毯和挂毯中的珍品。真絲毯加工精細、圖案色澤美觀,具有獨特的天然光澤,因此價格十分昂貴。洗滌真絲毯時,必須要做到保形、保樣、保色、保光,因此也隻能進行幹洗。而且還不能用幹洗機洗,隻能用手工進行幹洗。真絲毯洗滌前,要用吸塵器把真絲毯兩面的灰塵除淨。洗滌時,用小毛巾浸上溶劑汽油,呈潮濕狀,...
2026-05-17
現代服裝的保養、洗滌及換季後服裝的收藏
現代服裝的保養、洗滌及換季後服裝的收藏
對于高檔次高品牌現代服裝的保養、洗滌及換季後服裝的收藏,隻有采用科學的合理的方法,才能防止服裝發黴變質,蟲蛀破損,褶皺變形,保持面料的服用性能(包括外觀、手感、舒适性等)并延長服裝的使用壽命。1、保持清潔:收藏存放服裝的房間或箱櫃要保持幹淨,要求沒有異物及灰塵,以防止異物及灰塵污染服裝,同時要定期進...
2026-05-17
幹洗後的衣服為什麼會起泡
幹洗後的衣服為什麼會起泡
洗衣店在經營過程中經常會收到這樣的投訴,說幹洗将用戶的衣服洗起泡了,其實這種投訴是不正确,用戶應該向制衣商投訴,而不應該向洗衣店投訴。西服的制造過程中有一個工序是向面料上加襯,目前大部分都使用粘合襯,襯裡的表面上塗有一層膠,這種膠隻有在高溫下才能熔化,在粘合機裡,在高溫高壓下,襯裡就會十分牢固地粘合...
2026-05-17
如何制作連環衣鈎?連環衣鈎的制作方法
如何制作連環衣鈎?連環衣鈎的制作方法
如何制作連環衣鈎?連環衣鈎的制作方法連環衣鈎制作材料:鑰匙扣。連環衣鈎制作步驟:1、先摘下一件衣服,将一個鑰匙扣套在衣架的挂鈎上。摘下另一件衣服,同樣套上鑰匙扣。這時,第二件衣服就可以挂在第一件的衣架上了。2、把幾個鑰匙扣先套在一起,然後套在第一件衣服的挂鈎上,再依次在下面的鑰匙扣上挂上其他衣服。雖...
2026-05-17
如何防止拉鍊生鏽?肥皂防拉鍊生鏽
如何防止拉鍊生鏽?肥皂防拉鍊生鏽
有拉鍊的夾克衫,寶寶穿的衣服等,比較容易便捷,很省心。但拉鍊使用頻繁或時間稍長,就容易生鏽,媽媽們不妨用潤滑劑或者肥皂在拉鍊上擦一下,這樣一來不僅可以防止拉鍊生鏽,還能保持拉鍊使用時的靈活和潤滑,也能增加拉鍊的使用壽命。
2026-05-17
Copyright 2023-2026 - www.tftnews.com All Rights Reserved