首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言高效求素數:從定義到平方根優化的完整演進

     編輯:關於C

素數定義與朴素算法

素數:大於 1 的自然數,除 1 和自身外無其他因數。朴素判斷:對 n 從 2 試除到 n-1,若無法整除則為素數。時間複雜度 O(n),n=200 尚可,大數完全不可行。

兩大優化關鍵

  1. 跳過偶數:除 2 外無偶數素數,迴圈步進 2。
  2. 試除上限降至 √n:若 n = a × b,則 a ≤ √n 或 b ≤ √n。只需試除到 floor(√n)。

優化後代碼(100-200 區間)


break 與 continue 機制深度解析

  • break:跳出最內層迴圈,繼續執行迴圈後的語句。
  • continue:跳過本次迴圈剩餘語句,直接進入下一次迭代的判斷。
  • 巢狀迴圈中,只影響直接包含它們的那一層。

本例中 break 用於「一旦發現因數立即停止試除」,極大減少無效運算。

更進階:埃拉托斯特尼篩法

若需大量素數(如 1 百萬以內),試除法仍慢,應用篩法 O(n log log n):


總結

素數判斷是演算法優化的經典教材:從定義出發,利用數學性質(偶數排除、對稱因子)將複雜度從 O(n) 降至 O(√n),再配合 break 提前退出,工程上足以應對中小規模需求。大規模場景請直接上篩法或概率檢測。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved