算法-最大公約數

1、約數:

1.1 試除法求約數

原理:只需要遍歷最小的約數即可,較大的那個可以直接算出來。

import java.util.*;
public class Main {static Scanner sc = new Scanner(System.in);public static void main(String[] args) {int t = sc.nextInt();while(t-- > 0){solution();System.out.println();}}public static void solution(){int n = sc.nextInt();Set<Integer> set = new TreeSet<>(Integer::compare);for(int i = 1;i <= n / i;i++) {if(n % i == 0) {set.add(i);set.add(n / i);}}set.forEach((l)-> System.out.print(l + " "));}
}

1.2 求約數的個數

原理:

任何一個數 x 都可以寫成為:x = q1a1 + q2a2 + … + qnak

因此:約數個數的公式為:

count = (a1 + 1) × (a2 + 1) × … × (ak + 1)

同理:約數的和的公式為:

sum = (q10 + q11 + q12 + … + q1a1) × (q20+ q21 + q22 + … + q2a2) × … × (qn0 + qn1 + … + qnak)

例如:12 = 22 + 31

約數個數為:(2 + 1)× (1 + 1) = 2 × 3 = 6

驗證:12 的約數有 1、2、3、4、6、12 一共 六 個

約數和為:(20 + 21 + 22) × (30 + 31) = 28

驗證:1 + 2 + 3 + 4 + 6 + 12 = 28

import java.util.*;public class Main{static int N = (int) (1e9+7);public static void main(String[] args){Scanner sc = new Scanner(System.in);// 利用hash表存儲這個數的因數以及指數 x = q1a1 + q2a2 + ... + qnak Map<Integer,Integer> map = new HashMap<>();int n = sc.nextInt();while(n-- > 0) {int x = sc.nextInt();for(int i = 2;i <= x / i;i++) {while(x % i == 0) {x /= i;map.put(i,map.getOrDefault(i,0)+1);}}if(x > 1) // 如果 x > 1,表示這個數沒有被除進,直接將這個數放進去就好map.put(x,map.getOrDefault(x,0)+1);}long res = 1;// 這些乘積的結果的 約數的個數為 指數 + 1的乘積Set<Map.Entry<Integer, Integer>> entries = map.entrySet();for(Map.Entry<Integer, Integer> e : entries) {res = res * (e.getValue() + 1) % N;}System.out.println(res);}
}
import java.util.*;public class Main{static int N = (int) (1e9+7);public static void main(String[] args){Scanner sc = new Scanner(System.in);// 利用hash表存儲這個數的因數以及指數Map<Integer,Integer> map = new HashMap<>();int n = sc.nextInt();while(n-- > 0) {int x = sc.nextInt();for(int i = 2;i <= x / i;i++) {while(x % i == 0) {x /= i;map.put(i,map.getOrDefault(i,0)+1);}}if(x > 1) // 如果 x > 1,表示這個數沒有被除進,直接將這個數放進去就好map.put(x,map.getOrDefault(x,0)+1);}long res = 1;// 這些乘積的結果的 約數的個數為 指數 + 1的乘積Set<Map.Entry<Integer, Integer>> entries = map.entrySet();for(Map.Entry<Integer, Integer> e : entries) {long t = 1;int p = e.getKey();int a = e.getValue();// 這里就是算(q1^0 + q2^1 + q3^2 + ... + qn^a1)while(a -- > 0)  t = (t * p + 1) % N;res = res * t % N;}System.out.println(res);}
}

1.3 最大公因數(最大公約數)

原理:根據 (a,b) = (a,R) ===> 表示,a 和 b的共因數等于a和a % b的公因數

import java.util.*;
public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();while(n-- > 0) {int a = sc.nextInt();int b = sc.nextInt();System.out.println(gcd(a,b));}}static int gcd(int a,int b) {// 關鍵點:// 如果 a > b 那末就是想要的,b a換位,并且用小的取余大的// 如果 a < b 那末,由于 a%b=a 因此,相當于換位,值不變return b == 0 ? a : gcd(b,a%b);}
}

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

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

相關文章

湖北楚大夫

品牌出海已成為眾多企業拓展業務、提升競爭力的關鍵戰略。楚大夫(chudafu.com)作為一家專注于品牌出海、海外網絡營銷推廣以及外貿獨立站搭建的公司&#xff0c;憑借其專業、高效、創新的服務模式&#xff0c;致力于成為中國企業走向國際市場的堅實后盾與得力伙伴。楚大夫通過綜…

Flutter 學習之旅 之 flutter 使用 connectivity_plus 進行網路狀態監聽(斷網/網絡恢復事件監聽)

Flutter 學習之旅 之 flutter 使用 connectivity_plus 進行網路狀態監聽&#xff08;斷網/網絡恢復事件監聽&#xff09; 目錄 Flutter 學習之旅 之 flutter 使用 connectivity_plus 進行網路狀態監聽&#xff08;斷網/網絡恢復事件監聽&#xff09; 一、簡單介紹 二、conne…

從零開始實現 C++ TinyWebServer 處理請求 HttpRequest類詳解

文章目錄 HTTP 請求報文HttpRequest 類實現 Init() 函數實現 ParseRequestLine() 函數實現 ParseHeader() 函數實現 ParsePath() 函數實現 ParseBody() 函數實現 ParsePost() 函數實現 ParseFromUrlEncoded() 函數實現 UserVerify() 函數實現 Parse() 函數HttpRequest 代碼Http…

systemd-networkd 的 *.network 配置文件詳解 筆記250323

systemd-networkd 的 *.network 配置文件詳解 筆記250323 查看官方文檔可以用 man systemd.network命令, 或訪問: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html 名稱 systemd.network — 網絡配置 概要 network.network 描述 一個純…

自定義mavlink 生成wireshark wlua插件錯誤(已解決)

進入正題 python3 -m pymavlink.tools.mavgen --langWLua --wire-protocol2.0 --outputoutput/develop message_definitions/v1.0/development.xml 編譯WLUA的時候遇到一些問題 1.ERROR:SCHEMASV:SCHEMAV_CVC_ENUMERATION_VALID 3765:0:ERROR:SCHEMASV:SCHEMAV_CVC_ENUMERAT…

計算機操作系統(四) 操作系統的結構與系統調用

計算機操作系統&#xff08;四&#xff09; 操作系統的結構與系統調用 前言一、操作系統的結構1.1 簡單結構1.2 模塊化結構1.3 分層化結構1.4 微內核結構1.5 外核結構 二、系統調用1.1 系統調用的基本概念1.2 系統調用的類型 總結&#xff08;核心概念速記&#xff09;&#xf…

深入解析 Spring IOC AOP:原理、源碼與實戰

深入解析 Spring IOC & AOP&#xff1a;原理、源碼與實戰 Spring 框架的核心在于 IOC&#xff08;控制反轉&#xff09; 和 AOP&#xff08;面向切面編程&#xff09;。今天&#xff0c;我們將深入剖析它們的原理&#xff0c;結合源碼解析&#xff0c;并通過 Java 代碼實戰…

LLM之RAG理論(十四)| RAG 最佳實踐

RAG 的過程很復雜&#xff0c;包含許多組成部分。我們如何確定現有的 RAG 方法及其最佳組合&#xff0c;以確定最佳 RAG 實踐&#xff1f; 論文 《Searching for Best Practices in Retrieval-Augmented Generation》給出了回答。 本文將從以下三方面進行介紹&#xff1a; 首先…

利用knn算法實現手寫數字分類

利用knn算法實現手寫數字分類 1.作者介紹2.KNN算法2.1KNN&#xff08;K-Nearest Neighbors&#xff09;算法核心思想2.2KNN算法的工作流程2.3優缺點2.4 KNN算法圖示介紹 3.實驗過程3.1安裝所需庫3.2 MNIST數據集3.3 導入手寫數字圖像進行分類3.4 完整代碼3.5 實驗結果 1.作者介…

C語言-適配器模式詳解與實踐

文章目錄 C語言適配器模式詳解與實踐1. 什么是適配器模式&#xff1f;2. 為什么需要適配器模式&#xff1f;3. 實際應用場景4. 代碼實現4.1 UML 關系圖4.2 頭文件 (sensor_adapter.h)4.3 實現文件 (sensor_adapter.c)4.4 使用示例 (main.c) 5. 代碼分析5.1 關鍵設計點5.2 實現特…

Rust函數、條件語句、循環

文章目錄 函數**語句與表達式**條件語句循環 函數 Rust的函數基本形式是這樣的 fn a_func(a: i32) -> i32 {}函數名是蛇形風格&#xff0c;rust不在意函數的聲明順序&#xff0c;只需要有聲明即可 函數參數必須聲明參數名稱和類型 語句與表達式 這是rust非常重要的基礎…

maptalks圖層交互 - 模擬 Tooltip

maptalks圖層交互 - 模擬 Tooltip 圖層交互-模擬tooltip官方文檔 <!DOCTYPE html> <html><meta charsetUTF-8 /><meta nameviewport contentwidthdevice-width, initial-scale1 /><title>圖層交互 - 模擬 Tooltip</title><style typet…

好吧好吧,看一下達夢的模式與用戶的關系

單憑個人感覺&#xff0c;模式在達夢中屬于邏輯對象合集&#xff0c;回頭再看資料 應該是一個用戶可以對應多個模式 問題來了&#xff0c;模式的ID和用戶的ID一樣嗎&#xff1f; 不一樣 SELECT USER_ID,USERNAME FROM DBA_USERS WHERE USERNAMETEST1; SELECT ID AS SCHID, NA…

python socket模塊學習記錄

python黑馬程序員 通過python內置socket模塊&#xff0c;在電腦本地開發一個服務器&#xff0c;一個客戶端&#xff0c;連接后進行連續的聊天。服務器和客戶端均可輸入exit&#xff0c;主動退出連接。 服務器開發.py import socket# 創建Socket對象 socket_server socket.s…

7-2 sdut-C語言實驗-逆序建立鏈表

7-2 sdut-C語言實驗-逆序建立鏈表 分數 20 全屏瀏覽 切換布局 作者 馬新娟 單位 山東理工大學 輸入整數個數N&#xff0c;再輸入N個整數&#xff0c;按照這些整數輸入的相反順序建立單鏈表&#xff0c;并依次遍歷輸出單鏈表的數據。 輸入格式: 第一行輸入整數N;&#xff…

針對永磁電機(PMM)的d軸和q軸電流,考慮交叉耦合補償,設計P1控制器并推導出相應的傳遞函數

電流控制回路:針對永磁電機(PMM)的d軸和q軸電流&#xff0c;考慮交叉耦合補償&#xff0c;設計P1控制器并推導出相應的傳遞函數。 1. 永磁電機&#xff08;PMM&#xff09;的數學模型 在同步旋轉坐標系&#xff08; d ? q d - q d?q 坐標系&#xff09;下&#xff0c;永磁同…

ROS多機通信(四)——Ubuntu 網卡 Mesh 模式配置指南

引言 使用Ad-hoc加路由協議和直接Mesh模式配置網卡實現的網絡結構是一樣的&#xff0c;主要是看應用選擇&#xff0c; Ad-Hoc模式 B.A.T.M.A.N. / OLSR 優點&#xff1a;靈活性高&#xff0c;適合移動性強或需要優化的復雜網絡。 缺點&#xff1a;配置復雜&#xff0c;需手動…

chap1:統計學習方法概論

第1章 統計學習方法概論 文章目錄 第1章 統計學習方法概論前言章節目錄導讀 實現統計學習方法的步驟統計學習分類基本分類監督學習無監督學習強化學習 按模型分類概率模型與非概率模型 按算法分類按技巧分類貝葉斯學習核方法 統計學習方法三要素模型模型是什么? 策略損失函數與…

爬蟲案例-爬取某站視頻

文章目錄 1、下載FFmpeg2、爬取代碼3、效果圖 1、下載FFmpeg FFmpeg是一套可以用來記錄、轉換數字音頻、視頻&#xff0c;并能將其轉化為流的開源計算機程序。 點擊下載: ffmpeg 安裝并配置 FFmpeg 步驟&#xff1a; 1.下載 FFmpeg&#xff1a; 2.訪問 FFmpeg 官網。 3.選擇 Wi…

車載以太網網絡測試-22【傳輸層-DOIP協議-5】

目錄 1 摘要2 DoIP時間參數2.1 ISO 13400定義的時間參數2.2 參數示例 3 DoIP節點內部狀態機4 UDSonIP概述5 總結 1 摘要 本文繼續對DOIP協議進行介紹&#xff0c;主要是DOIP相關的時間參數、時間參數定義以及流程示例。推薦大家對上文專題進行回顧&#xff0c;有利于系統性學習…