tft每日頭條

 > 科技

 > c語言求50-100之間的所有素數

c語言求50-100之間的所有素數

科技 更新时间:2024-08-19 03:22:44

先給出素數的定義:

  • 素數是隻能被1和自身整出的整數。
  • 1不是素數

算法思考:

判斷一個數是不是素數,隻需要判斷它是不能隻能被1和自身整除。

那怎麼判斷一個數不能被除1和自身之外的其他數整除呢?想法是寫一個循環,循環裡依次除以從2到這個數減1的所有的整數,如果都不能整除,說明這個數是素數;如果出現一個能整除的數,那麼這個數不是素數。

(其實,判斷素數還可以優化,循環裡依次除以從2到這個數平方根的所有的整數就可以了。因為假設一個數n,除以2~根号n的整數,都不能整除,那麼除以根号n~n-1的整數也不能整數。在文章最後再貼上優化的代碼。)

那怎麼判斷能不能整除呢?我麼知道C語言有求餘數的運算符%,如果餘數是0,那麼說明能整除了。

我們來寫程序代碼。這裡,說明一下,當你寫一個具有某個功能的代碼的時候,把這個功能寫成一個函數,而不是所有的代碼都放在main函數裡。在main函數裡調用這個你寫的函數。

給函數命名,如果你知道或者查到了素數的英文單詞是prime number,那麼函數可以起名為 is_primer_number(如果你不知道素數的英文單詞,那麼随便起個名字也可以,比如叫fun)。因為要傳遞一個代判斷的整數,所以有一個int類型參數。返回值我們用bool型(代碼裡要包含頭文件stdbool.h),如果是素數返回true,如果不是素數返回false。

代碼:

c語言求50-100之間的所有素數(1到1000之間所有的素數)1

判斷是不是素數的函數寫好了。題目是要求1到1000之間所有的函數。你可以再寫一個函數,函數的功能是求1到某個整數之間的所有素數并打印。函數命名為print_prime_num。有一個int類型參數。返回值我們寫為整型,返回素數的個數。

循環把2到這個數之間的每個整數,作為參數,傳給上面寫的函數is_prime_number(),如果是素數,就打印。

c語言求50-100之間的所有素數(1到1000之間所有的素數)2

main函數的寫法。輸入一個整數,作為參數,傳給函數print_prime_number()處理:

c語言求50-100之間的所有素數(1到1000之間所有的素數)3

運行結果:

c語言求50-100之間的所有素數(1到1000之間所有的素數)4

優化

判斷素數的函數還可以優化,循環裡依次除以從2到這個數平方根的所有的整數就可以了。因為假設一個數n,除以2~根号n的整數,都不能整除,那麼除以根号n~n-1的整數也不能整數。所以我們隻要循環2~根号n之間的數就可以了。

函數is_prime_number()可以寫為下面這樣。這裡用到了求平方根的函數sqrt(),要包含頭文件math.h。另外,函數sqrt()的返回類型是double,但是這裡我們要的是整數,所以加上(int)強制轉換為整型。

c語言求50-100之間的所有素數(1到1000之間所有的素數)5

運行結果:

c語言求50-100之間的所有素數(1到1000之間所有的素數)6

歡迎掃碼關注“C語言修仙”,分享C語言知識點、編程工具、解題方法。

c語言求50-100之間的所有素數(1到1000之間所有的素數)7

關注“C語言修仙”,分享C語言知識點、編程工具、解題方法

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved