【C++練習】06.輸出100以內的所有素數

目錄

  • 輸出100以內的所有素數
    • 方法1:基礎判斷法
    • 方法2:埃拉托斯特尼篩法(效率更高)
    • 方法3:優化版篩法(只考慮奇數)
    • 方法4:使用STL算法
    • 方法5:遞歸實現
    • 總結:

輸出100以內的所有素數

方法1:基礎判斷法

#include <iostream>
using namespace std;bool isPrime(int n) {if (n <= 1) return false;for (int i = 2; i * i <= n; i++) {if (n % i == 0) return false;}return true;
}int main() {for (int i = 2; i <= 100; i++) {if (isPrime(i)) {cout << i << " ";}}return 0;
}

方法2:埃拉托斯特尼篩法(效率更高)

#include <iostream>
#include <vector>
using namespace std;void sieveOfEratosthenes(int n) {vector<bool> prime(n + 1, true);prime[0] = prime[1] = false;for (int p = 2; p * p <= n; p++) {if (prime[p]) {for (int i = p * p; i <= n; i += p) {prime[i] = false;}}}for (int p = 2; p <= n; p++) {if (prime[p]) {cout << p << " ";}}
}int main() {sieveOfEratosthenes(100);return 0;
}

方法3:優化版篩法(只考慮奇數)

#include <iostream>
#include <vector>
using namespace std;void optimizedSieve(int n) {if (n >= 2) cout << "2 ";int size = (n - 1) / 2;vector<bool> prime(size, true);for (int i = 0; i < size; i++) {if (prime[i]) {int p = 2 * i + 3;cout << p << " ";for (int j = p * p; j <= n; j += 2 * p) {prime[(j - 3) / 2] = false;}}}
}int main() {optimizedSieve(100);return 0;
}

方法4:使用STL算法

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;bool isPrime(int n) {if (n <= 1) return false;for (int i = 2; i * i <= n; i++) {if (n % i == 0) return false;}return true;
}int main() {vector<int> numbers(99);iota(numbers.begin(), numbers.end(), 2);numbers.erase(remove_if(numbers.begin(), numbers.end(), [](int n) { return !isPrime(n); }),numbers.end());for (int n : numbers) {cout << n << " ";}return 0;
}

方法5:遞歸實現

#include <iostream>
using namespace std;bool isPrime(int n, int i = 2) {if (n <= 2) return (n == 2);if (n % i == 0) return false;if (i * i > n) return true;return isPrime(n, i + 1);
}int main() {for (int i = 2; i <= 100; i++) {if (isPrime(i)) {cout << i << " ";}}return 0;
}

總結:

  • 基礎判斷法簡單直觀,適合小范圍素數判斷
  • 篩法在大數據量時效率更高
  • STL版本展示了C++標準庫的使用
  • 遞歸版本展示了另一種思維方式

輸出結果都是100以內的素數:

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/921369.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/921369.shtml
英文地址,請注明出處:http://en.pswp.cn/news/921369.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在開發中使用git rebase的場景

rebase介紹 一、背景 遠程倉庫有oh4w-dev和oh4k-dev兩個分支&#xff0c;oh4k-dev是基于oh4w-dev開發到80%的代碼新拉的分支&#xff1b;此后兩條分支同步開發&#xff0c;當oh4k-dev開發完成&#xff0c;oh4w-dev還在開發階段&#xff0c;oh4k-dev需要拉取到oh4w-dev自分出o…

TDengine 時序函數 NOW() 用戶手冊

TDengine NOW() 函數用戶使用手冊 目錄 功能概述函數語法返回值說明技術特性使用場景及示例時間運算操作注意事項常見問題 功能概述 NOW() 函數是 TDengine 中的時間函數&#xff0c;用于獲取客戶端當前系統時間。該函數在時序數據庫中特別有用&#xff0c;可以用于數據插入…

JavaWeb ——事務管理

文章目錄事務管理事務回顧Spring事務管理事務進階事務屬性 - 回滾 rollbackFor事務屬性 - 傳播行為 propagationSpring框架第一大核心: IOC控制反轉&#xff0c; 其第二大核心就是 AOP 面向切面編程 事務管理 事務回顧 Spring事務管理 # spring 事務管理日志 logging:level:org…

【跨國數倉遷移最佳實踐8】MaxCompute Streaming Insert: 大數據數據流寫業務遷移的實踐與突破

本系列文章將圍繞東南亞頭部科技集團的真實遷移歷程展開&#xff0c;逐步拆解 BigQuery 遷移至 MaxCompute 過程中的關鍵挑戰與技術創新。本篇為第八篇&#xff0c;MaxCompute Streaming Insert&#xff1a; 大數據數據流寫業務遷移的實踐與突破。注&#xff1a;客戶背景為東南…

2025-09-05 CSS4——浮動與定位

文章目錄1 顯示&#xff08;Display&#xff09;1.1 visibility:hidden1.2 display:none2 塊和內聯元素2.1 塊元素2.2 內聯元素2.3 改變元素的顯示方式3 浮動&#xff08;Float&#xff09;3.1 float 屬性3.2 clear 屬性4 定位&#xff08;Position&#xff09;4.1 五種定位模式…

43這周打卡——生成手勢圖像 (可控制生成)

目錄 前言 1.導入數據及數據可視化 2.構建模型 3.訓練模型 4.模型分析并生成指定圖像 總結 前言 &#x1f368; 本文為&#x1f517;365天深度學習訓練營中的學習記錄博客&#x1f356; 原作者&#xff1a;K同學啊 1.導入數據及數據可視化 from torchvision import data…

TDengine 時間函數 TIMEDIFF() 用戶手冊

TDengine TIMEDIFF() 函數詳細使用手冊 目錄 功能概述函數語法參數說明返回值說明版本變更說明技術特性使用場景及示例時間單位處理數據類型兼容性注意事項常見問題最佳實踐 功能概述 TIMEDIFF() 函數用于計算兩個時間戳的差值&#xff0c;返回 expr1 - expr2 的結果。結果…

【2025ICCV-持續學習方向】一種用于提示持續學習(Prompt-based Continual Learning, PCL)的新方法

1. 背景與問題 (Background & Problem):?? ?持續學習 (CL):?? 目標是在不遺忘舊任務知識的情況下,讓模型持續學習一系列新任務。主要挑戰是災難性遺忘。 ?基于提示的持續學習 (PCL):?? 利用預訓練視覺Transformer (ViT),凍結其權重,通過微調稱為“提示”(prompt…

2025 年 08 月 GitHub 十大熱門項目排行榜

歡迎來到 2025 年 8 月 GitHub 熱門開源項目排行榜&#xff01;本月榜單集中展示了來自智能體平臺、AI 編程助手、多模態角色系統、本地化部署工具到可視化白板與企業協同平臺的多元創新。從構建 AI 助手中樞的 Archon&#xff0c;到終端 AI 編碼拍檔 Crush&#xff0c;再到虛擬…

LeetCode每日一題,2025-9-4

多數元素 投票法 讓你找到序列中出現超過二分之一的元素&#xff0c;一定要記住這個規則。 記錄兩個值val和cnt&#xff0c;剛開始val為任意數&#xff0c;cnt0。 如果cnt是0&#xff0c;就把當前val num。接下來判斷&#xff0c;ifnum val&#xff0c;則cnt &#xff0c;e…

第7章 安全配置

7.1 安全概述 Jenkins安全威脅 常見安全風險&#xff1a; 訪問控制風險&#xff1a; - 未授權訪問Jenkins實例 - 權限提升攻擊 - 橫向移動攻擊 - 敏感信息泄露代碼執行風險&#xff1a; - 惡意腳本注入 - 構建腳本篡改 - 插件漏洞利用 - 遠程代碼執行數據安全風險&#xff1a; …

騰訊混元世界模型Voyager開源:單圖生成3D世界的“核彈級”突破,游戲、VR、自動駕駛迎來新變量

當AI繪畫、視頻生成技術逐漸從“新鮮感”走向“實用化”&#xff0c;3D內容生成卻始終卡在“效率低、成本高、門檻高”的瓶頸里。傳統3D建模需要專業軟件、大量人工調整&#xff0c;甚至依賴昂貴的硬件設備&#xff0c;讓中小團隊和個人創作者望而卻步。 但騰訊AI實驗室最近開…

數據庫(基礎操作)

SQL 結構化的查詢語句 我們現在需要寫SQL語句 --- 這個玩意兒就是數據庫的操作語句我們的數據庫就類似于一個excl表格它有n列&#xff0c;每一列為一個大類&#xff0c;數據以行存在&#xff0c;一行代表一個條目數據如&#xff1a;我現在想建立一個數據庫保存學生的信息你需要…

linux ubi文件系統

1&#xff0c;UBI&#xff08;Unsorted Block Images&#xff09;是 Linux 內核中為原始 Flash 設備提供的一種抽象層&#xff0c;位于 MTD&#xff08;Memory Technology Device&#xff09;和文件系統&#xff08;如 UBIFS&#xff09;之間。它負責壞塊管理、磨損均衡、邏輯卷…

深度厚金板PCB與厚銅PCB的區別

厚金板PCB和厚銅PCB在電子制造領域都有重要應用&#xff0c;它們有著不同的特點和適用場景。下面為你詳細介紹二者的區別。厚金PCB是什么厚金PCB是在印制電路板表面鍍上較厚金層的電路板。這層厚金能提升電路板的導電性、抗氧化性和耐磨性。在一些對信號傳輸要求極高、使用環境…

一階低通濾波器應用示例(演示)

1. 代碼 這段代碼實現了一個一階低通濾波器&#xff08;也稱為指數加權移動平均濾波器&#xff09;。它適用于需要平滑數據、減少噪聲的場合。以下是一些常見的應用場景&#xff1a; 傳感器數據平滑&#xff1a;在嵌入式系統或物聯網設備中&#xff0c;傳感器&#xff08;如溫度…

RT-Thread源碼分析字節實現socket源碼

無論是客戶端還是服務器程序&#xff0c;發送的底層都是發送AT指令&#xff1a;1&#xff09;發送命令到串口&#xff1b;2&#xff09;阻塞等待返回結果接收的底層都是1&#xff09;阻塞等待&#xff1b;2&#xff09;被喚醒后拷貝處理數據兩者均由后臺任務喚醒&#xff0c;后…

keil 5 STM32工程介紹

目錄 一、工程文件介紹 1.自動生成的文件 2.自建文件 &#xff08;1&#xff09;USER 文件夾 &#xff08;2&#xff09;FWLIB 文件夾 &#xff08;3&#xff09;CMSIS 文件夾 二、工程創建教程 1.下載固件庫 2.創建工程 &#xff08;1&#xff09;創建不完善的工程 …

AI大模型如何重塑日常?從智能辦公到生活服務的5個核心改變

AI大模型重塑日常&#xff1a;從智能辦公到生活服務的5個核心改變一、引言? 簡述AI大模型技術的快速發展背景&#xff0c;說明其已從技術領域逐步滲透到大眾日常生活? 提出核心觀點&#xff1a;AI大模型正從辦公和生活服務兩大場景&#xff0c;深度改變人們的行為模式與…

邁威通信從送快遞角度教你分清網絡二層和三層

還在為網絡里的二層、三層概念頭大?其實就像送快遞那么簡單!今天邁威通信用最接地氣的方式給你講明白&#xff5e;網絡傳輸 送快遞?沒錯!二層網絡&#xff1a;本地送貨員負責同小區的包裹配送(局域網傳輸)&#xff0c;就像小區里的快遞站(對應設備&#xff1a;交換機)&#…