【C++ 基礎數論】質數判斷

質數判斷

質數:對于所有大于 1 的自然數而言,如果該數除 1 和自身以外沒有其它因數 / 約數,則該數被稱為為質數,質數也叫素數。

如何判定一個數是否為質數呢?

一個簡單的方法是 試除法 : 對于一個數 n, 可以枚舉 [ 2, n-1 ] 區間內所有數,去嘗試整除 n,如果在區間內存在一個數能將 n 整除,則 n 不是質數。

還要注意一個點 : 最小的質數是 2,小于 1 的數不是質數。

所以,代碼如下:

bool isPrime(int n){if(n <= 1) return false;for(int i = 2; i < n; i++){if(n % i == 0) return false;}return true;
}

那么上述代碼還能優化嗎?答案是 可以 。

如果按照上面的代碼運行的話,對于一個數,我們將它所有的約數全都枚舉了一遍,到底有沒有必要呢?

下面舉個例子: 例如12,顯然12不是質數, 它的因數有1、2、3、4、6、12,我們可以發現他的因數是成對出現的,(1, 12)、(2, 6)、(3, 4),那我們能不能只枚舉小的那一個因數呢,這樣就算是一個質數,當我們枚舉一直到 n \sqrt{n} n ? ,我們發現沒有符合條件的因子時就不用再向下枚舉了,因為一個合數的因子都是成對出現的。

所以 for 循環中的條件可以寫成這樣 :

i ≤ \leq n \sqrt{n} n ?

但是一個數的平方根不一定是一個整數,所以我們還可以這樣寫:

i ? \ast ? i ≤ \leq n

有的時候,當 n 很大的時候, i ? \ast ?i 有可能會超內存,可以改為 :

i ≤ \leq n / i

當然還有一點很重要,不要忘了 4、9、16、25 等等這種是一個數平方的要特別注意

最終代碼

bool isPrime(int n){if(n <= 1) return false;for(int i = 2; i <= n/i; i++){if(n % i == 0) return false;}return true;
}

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

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

相關文章

6to4、6over4的類比解釋

本文由deepseek生成&#xff0c;特此聲明 1. 6to4&#xff1a;自動的“快遞中轉站” 類比場景&#xff1a; 假設你住在一個偏遠的小鎮&#xff08;IPv6網絡&#xff09;&#xff0c;周圍被大海&#xff08;IPv4互聯網&#xff09;包圍&#xff0c;你想給另一個偏遠小鎮&#…

數字化工廠升級引擎:Modbus TCP轉Profinet網關助力打造柔性生產系統

在當今的工業自動化領域&#xff0c;通信協議扮演著至關重要的角色。Modbus TCP和Profinet是兩種廣泛使用的工業通信協議&#xff0c;它們分別在不同的應用場景中發揮著重要作用。然而&#xff0c;有時我們可能需要將這兩種協議進行轉換&#xff0c;以實現不同設備之間的無縫通…

計算機網絡-MPLS LDP基礎實驗配置

前面我們學習了LDP的會話建立、標簽發布與交換、LDP的工作原理&#xff0c;今天通過一個基礎實驗來加深記憶。 一、LDP基礎實驗 實驗拓撲&#xff1a; 1、IGP使用OSPF進行通告&#xff0c;使用Lookback接口作為LSR ID&#xff0c;LDP ID自動生成。 2、實驗目的&#xff1a;使…

Ocean: Object-aware Anchor-free Tracking

領域&#xff1a;Object tracking It aims to infer the location of an arbitrary target in a video sequence, given only its location in the first frame 問題/現象&#xff1a; Anchor-based Siamese trackers have achieved remarkable advancements in accuracy, yet…

[Java] 方法和數組

目錄 1. 方法 1.2 什么是方法 1.2 方法的定義 1.3 方法的調用 1.4 方法的重載 1.5 遞歸 2. 一維數組 2.1 什么是數組 2.2 數組的創建 2.3 數組的初始化 2.4 遍歷數組 2.5 引用數據類型 2.6 關于null 2.7 數組轉字符串 2.8 數組元素的查找 2.9 數組的排序 2.10…

全局異常處理:如何優雅地統一管理業務異常

在軟件開發中&#xff0c;異常處理是保證系統健壯性的重要環節。一個良好的異常處理機制不僅能提高代碼的可維護性&#xff0c;還能為使用者提供清晰的錯誤反饋。本文將介紹如何通過全局異常處理和業務異常統一處理來編寫更加優雅的代碼。 一、傳統異常處理的痛點 1.1 典型問…

PHP 編程:現代 Web 開發的基石與演進

引言 PHP&#xff08;Hypertext Preprocessor&#xff09;自1995年誕生以來&#xff0c;已成為全球最流行的服務器端腳本語言之一。盡管近年來Node.js、Python等語言在特定領域嶄露頭角&#xff0c;但PHP仍占據著超過78%的網站市場份額&#xff08;W3Techs數據&#xff09;。本…

MCU程序加密保護(一)閃存讀寫保護法 加密與解密

MCU&#xff08;微控制器單元&#xff09;的加密方法可以從硬件、軟件和通信協議三個層面來理解。以下是常見的MCU加密手段&#xff0c;按類型分類說明&#xff1a; 針對目前 STM32 系列微控制器在程序加密保護方面手段單一、保護效果有限的問題&#xff0c;本文介紹并分析了四…

汽車裝配又又又升級,ethernetip轉profinet進階躍遷指南

1. 場景描述&#xff1a;汽車裝配線中&#xff0c;使用EtherNet/IP協議的機器人與使用PROFINET協議的PLC進行數據交互。 2. 連接設備&#xff1a;EtherNet/IP機器人控制器&#xff08;如ABB、FANUC&#xff09;與PROFINET PLC&#xff08;如西門子S7-1500&#xff09;。 3. 連…

RFID系統:技術解析與應用全景

一、技術架構與運行邏輯 RFID&#xff08;Radio Frequency Identification&#xff09;系統通過無線電波實現非接觸式數據交互&#xff0c;其核心由三部分組成&#xff1a; 電子標簽&#xff08;Tag&#xff09;&#xff1a; 無源標簽&#xff1a;依賴讀寫器電磁場供電&…

25、DeepSeek-R1論文筆記

DeepSeek-R1論文筆記 1、研究背景與核心目標2、核心模型與技術路線3、蒸餾技術與小模型優化4、訓練過程簡介5、COT思維鏈&#xff08;Chain of Thought&#xff09;6、強化學習算法&#xff08;GRPO&#xff09;7、冷啟動**1. 冷啟動的目的****2. 冷啟動的實現步驟****3. 冷啟動…

開源項目實戰學習之YOLO11:12.2 ultralytics-models-sam-decoders.py源碼分析

?? 點擊關注不迷路 ?? 點擊關注不迷路 ?? 另外,前些天發現了一個巨牛的AI人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。感興趣的可以點擊相關跳轉鏈接。 點擊跳轉到網站。 ultralytics-models-sam 1.sam-modules-decoders.pyblocks.py: 定義模型中的各…

Raft 協議:分布式一致性算法的核心思想

引言 在分布式系統中&#xff0c;數據一致性是核心挑戰。Raft 協議作為一種易于理解的一致性算法&#xff0c;被廣泛應用于 etcd、Consul 等系統中。 一、Raft 核心概念 1.1 角色與任期&#xff08;Term&#xff09; ? 領導者&#xff08;Leader&#xff09;&#xff1a;處…

基于DWT的音頻水印算法

基于離散小波變換&#xff08;DWT&#xff09;的音頻水印算法是一種結合信號處理與信息隱藏的技術&#xff0c;旨在將版權信息或標識隱蔽地嵌入音頻信號中&#xff0c;同時保證不可感知性和魯棒性。以下是該算法的核心步驟及關鍵技術點&#xff1a; ?1. 算法基本原理? ?DWT…

低空經濟發展現狀與前景

低空經濟發展現狀與前景 一、低空經濟的定義與范疇 低空經濟是以民用有人駕駛和無人駕駛航空器為主體&#xff0c;以載人、載貨及其他作業等多場景低空飛行活動為牽引&#xff0c;輻射帶動商業活動或公共服務領域融合發展的一種綜合性新經濟形態。其涵蓋的低空空域通常為距離…

售前工作.工作流程和工具

第一部分 售前解決方案及技術建議書的制作 售前解決方案編寫的標準操作步驟SOP: 售前解決方案寫作方法_嗶哩嗶哩_bilibili 第二部分 投標過程關鍵活動--商務標技術方案 1. 按項目管理--售前銷售項目立項 銷售活動和銷售線索的跟蹤流程和工具 1&#xff09;拿到標書&#xff…

DeerFlow試用

github拉取代碼 配置.env和conf.yaml 注意設置大模型的url和模型名稱、api_key 先啟動根目錄下的server&#xff0c;端口如果有沖突直接在default變量賦值時修改&#xff1b; 再啟動前端&#xff0c;先build再run dev&#xff1b; 根據前端完成時的地址訪問界面&#xff1…

python + streamlink 下載 vimeo 短視頻

1. 起因&#xff0c; 目的: 看到一個視頻&#xff0c;很喜歡&#xff0c;想下載。https://player.vimeo.com/video/937787642 2. 先看效果 能下載。 3. 過程: 因為我自己沒頭緒。先看一下別人的例子&#xff0c; 問一下 ai 或是 google問了幾個來回&#xff0c;原來是流式…

JavaScript【6】事件

1.概述&#xff1a; 在 JavaScript 中&#xff0c;事件&#xff08;Event&#xff09;是瀏覽器或 DOM&#xff08;文檔對象模型&#xff09;與 JavaScript 代碼之間交互的一種機制。它代表了在瀏覽器環境中發生的特定行為或者動作&#xff0c;比如用戶點擊鼠標、敲擊鍵盤、頁面…

【Java ee初階】HTTP(2)

一、HTTP的方法 方法 說明 支持的HTTP協議版本 GET 獲取資源 1.0、1.1 POST 傳輸實體主體 1.0、1.1 PUT 傳輸文件 1.0、1.1 HEAD 獲得報文首部 1.0、1.1 DELETE 刪除文件 1.0、1.1 OPTIONS 詢問支持的方法 1.1 TRACE 追蹤路徑 1.1 CONNECT 要求用隧道…