国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[數(shù)論第一節(jié)]質(zhì)數(shù)/約數(shù)

這篇具有很好參考價值的文章主要介紹了[數(shù)論第一節(jié)]質(zhì)數(shù)/約數(shù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

  • 數(shù)論

    • 質(zhì)數(shù)

      • 在大于1的整數(shù)中,只包含1和本身這兩個約數(shù),就被稱為質(zhì)數(shù),也叫素數(shù)
      • 質(zhì)數(shù)的判定
        • 試除法
          • 遍歷2-n,若有約數(shù)則不為質(zhì)數(shù) O(n)
          • 優(yōu)化:
            • d整除n,則n/d也整除n,約數(shù)總是成對出現(xiàn),只要找較小的約數(shù),即取d <= n/d,則d <= sqrt(n) 只用遍歷2-sqrt(n) O(sqrt(n))
            • 不用 i * i <= n ,i過大會溢出
            • sqrt()函數(shù)較慢,只用遍歷 d--n/d,即限制范圍為 i--n/i
          • 代碼:
            //不用for(int i = 1; i * i <= n; ++ i) i * i 會溢出
            //不用for(int i = 1; i <= sqrt(n); ++ i) sqrt() 函數(shù)緩慢
            //用for(int i = 1; i <= n / i; ++ i)  不會溢出,快
            bool is_prime(int x){
            	if(x < 2) return false;
            	for(int i = 2; i <= n / i; ++ i)
            		if(n % i == 0) return false;
            	return true;
            }
            
      • 分解質(zhì)因數(shù)
        • 試除法
          • 遍歷2-n,找因子
          • n最多有一個大于sqrt(n)的因子,因此只用在2-sqrt(n)中找因子,最后判斷最后一個因子是否為大于sqrt(n)的因子
          • 代碼:
            //暴力做法
            void divide(int n){
            	for(int i = 2; i <= n; ++ i){
            		if(n % i == 0){
            			int s = 0; //i的個數(shù)
            			while(n % i == 0){
            				n /= i; //除干凈
            				s ++ ;
            			}
            			cout << i << s << endl;
            		}
            	}
            }
            //優(yōu)化
            void divide(int n){
            	for(int i = 2; i <= n / i; ++ i){
            		if(n % i == 0){
            			int s = 0;
            			while(n % i == 0){
            				n /= i;
            				s ++ ;
            			}
            			cout << i << s << endl;
            		}
            	}
            	if(n > 2) cout << n << 1;//n就是最后大于sqrt(n)的因子
            }
            
      • 篩選質(zhì)數(shù)
        • 埃氏篩法
          • 從2-n,將每個數(shù)的倍數(shù)刪掉,那么剩下的數(shù)就是質(zhì)數(shù) O(nln(n))
          • 優(yōu)化:
            • 任何一個合數(shù)都可以拆成若干素數(shù)之積,因此只用將素數(shù)的倍數(shù)刪掉 O(nln(ln(n))) ~ O(n)
          • 代碼:
            int primes[N];
            int st[N];//標記是否被篩過
            void get_primes(int n){
            	int cnt = 0;
            	for(int i = 2; i <= n; ++ i){
            		if(!st[i]){ //沒有被篩過,說明是質(zhì)數(shù)
            			primes[ ++ cnt] = i;
            			//篩該質(zhì)數(shù)的所有倍數(shù)
            			for(int j = i + i; j <= n; j += i) st[j] = 1;
            		}
            	}
            }
            
        • 線性篩法
          • 數(shù)據(jù)大小在107左右線性篩法比埃氏篩法快一倍,106左右差不多
          • n只會被它的最的最小質(zhì)因子篩掉,利用最小質(zhì)因子篩掉合數(shù)
          • 代碼:
            int primes[N];
            int st[N];
            void get_primes(int n){
            	int cnt = 0;
            	for(int i = 2; i <= n; ++ i){
            		if(!st[i]) primes[ ++ cnt] = i;//沒有被篩掉就是質(zhì)數(shù)
            		for(int j = 1; primes[j] <= n / i; ++ j){//從小到大遍歷質(zhì)數(shù)
            			st[primes[j] * i] = 1; //篩掉合數(shù),若x是合數(shù),當i遍歷到x時,一定會先遍歷到x的最小質(zhì)因子prime,所以此時prime進入primes數(shù)組,當i遍歷到x/prime時,x = prime*i會被篩掉,所以每個合數(shù)都能被篩掉,并且是在遍歷到該合數(shù)之前被篩掉
            			if(i % pimes[j] == 0) break; //i是合數(shù)篩掉i,i在之前就被標記過,所以不用再標記
            		} 
            	}
            }
            
    • 約數(shù)

      • 求所有約數(shù)

        • 試除法
          • 代碼:
            vector<int> get_divisors(int n){
            	vector<int> res;
            	for(int i = 1; i <= n / i; ++ i){
            		if(n % i == 0){
            			res.push_back(i);
            			if(i != n / i) res.push_back(n / i);
            		}
            	}
            	sort(res.begin(), res.end());
            	return res;
            }
            
      • 約數(shù)的個數(shù)

        • \(N = p_1^{a_1} · p_2^{a_2} · p_3^{a_3} ··· ·p_n^{a_n}\) 其中p為N的所有質(zhì)因子
        • 則N的約數(shù)個數(shù)為:\((a_1+1)(a_2+1)(a_3+1)···(a_n+1)\)
          • 代碼:
            const int mod = 1e7 + 10;
            unordered_map<int, int> primes;//hash表存儲每個質(zhì)數(shù)有多少
            void get_primes(int n){
            	for(int i = 2; i <= n / i; ++ i){
            		while(n % i == 0){
            			n /= i;
            			primes[i] ++ ;
            		}
            	}
            	if(n > 1) primes[n] ++ ;
            }
            for(int i = 1; i <= n; ++ i) get_primes(a[i]);
            long long res = 0;
            for(auto p : primes) res = res * (p.second + 1) % mod;
            
        • 則N的約數(shù)總和為:\((p_1^{0}+p_1^{2}+···+p_1^{n})(p_2^{0}+p_2^{1}+···+p_2^{n})···(p_n^{0}+p_n^{1}+···+p_n^{n})\)
          • 代碼:
            const int mod = 1e7 + 10;
            unordered_map<int, int> primes;
            void get_primes(int n){
            		for(int i = 2; i <= n / i; ++ i){
            			while(n % i == 0){
            				n /= i;
            				primes[i] ++ ;
            			}
            		}
            		if(n > 1) primes[n] ++ ;
            	}
            	for(int i = 1; i <= n; ++ i) get_primes(a[i]);
            	long long res = 1;
            	for(auto p : primes){
            		long long t = 1;
            		int a = p.first, b = p.second;
            		while(b -- ) t = (t * a + 1) % mod;
            		res = res * t % mod;
            	}
            
      • 最大公約數(shù)

        • 輾轉(zhuǎn)相除法(歐幾里得算法)O(logn)
        • a|b, a|c, 則 a|(b+c), 則a|(bx + cy)
        • 求a與b的最大公約數(shù),設(shè)其公約數(shù)為c,則c|a, c|b, c|(ax + by), 設(shè)a = kb + m, 則m = a - kb, 則c|m, 又m = a % b, 則 c|(a % b), 即a與b的最大公約數(shù),也是a%b的公約數(shù),即gcd(a, b) = gcd(b, a % b)
        • 代碼:
          int gcd(int a, int b){
          	return b ? gcd(b, a % b) : a;
          }
          

文章來源地址http://www.zghlxwxcb.cn/news/detail-633014.html

到了這里,關(guān)于[數(shù)論第一節(jié)]質(zhì)數(shù)/約數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 數(shù)論 --- 約數(shù)和定理公式推導、最大公約數(shù)、歐幾里得算法

    數(shù)論 --- 約數(shù)和定理公式推導、最大公約數(shù)、歐幾里得算法

    和試除法判斷一個數(shù)是不是質(zhì)數(shù)是一個道理 從小到大枚舉所有的約數(shù),如果當前數(shù)能整除這個數(shù)的話,說明這個數(shù)就是當前數(shù)的約數(shù) 優(yōu)化,與試除法判斷質(zhì)數(shù)是一樣的 如果 d 是 n 的約數(shù),n / d 也一定能整除 n,一個數(shù)的約數(shù)也一定是成對出現(xiàn)的,在枚舉的時候也可以只枚舉

    2023年04月08日
    瀏覽(26)
  • 關(guān)于質(zhì)數(shù)篩——數(shù)論

    埃式篩法 ?歐拉篩

    2024年02月15日
    瀏覽(21)
  • C++數(shù)論————質(zhì)數(shù)篩法(單獨判斷一個數(shù),判斷N個數(shù)) 埃氏篩法

    C++數(shù)論————質(zhì)數(shù)篩法(單獨判斷一個數(shù),判斷N個數(shù)) 埃氏篩法

    質(zhì)數(shù)想必大家都不陌生 從小學到大 質(zhì)數(shù)的概念: 一個數(shù)如果除了1和本身之外沒有其他的因子,那么這個數(shù)被稱為質(zhì)數(shù) 今天要講兩個知識點: 在C++中如何判斷一個數(shù)是否為質(zhì)數(shù) 在C++中如何判斷1-N之間哪些數(shù)為整數(shù) 在C++中如何判斷一個數(shù)是否為質(zhì)數(shù) 這個知識點較為簡單 充分

    2023年04月08日
    瀏覽(25)
  • e[2333333, 23333333] 中有多少個正整數(shù) 可以被分解為 12 個質(zhì)數(shù)相乘?

    任何一個大于 1 的正整數(shù)都能被分解為若干個質(zhì)數(shù)相乘, 比如?28=2 times 2 times 728=2×2×7?被分解為了三個質(zhì)數(shù)相乘。請問在區(qū)間 [2333333, 23333333] 中有多少個正整數(shù) 可以被分解為 12 個質(zhì)數(shù)相乘? 答案提交 這是一道結(jié)果填空的題,你只需要算出結(jié)果后提交即可。本題的結(jié)果為一

    2023年04月08日
    瀏覽(72)
  • Element UI el-input 只能輸入大于0的正整數(shù)

    當輸入值以0開頭或者不為0-9的整數(shù)時,則用\\\' \\\'替換掉(/g表示全局匹配,則所有匹配項都會被替換掉),效果為不能輸入以0開頭或不為正整數(shù)的值。

    2024年02月14日
    瀏覽(28)
  • 第一章-第一節(jié)-會計概念、職能和目標

    第一章-第一節(jié)-會計概念、職能和目標

    東方欲曉,莫道君行早,踏遍青山人未老,風景這邊獨好。雖然我的專業(yè)是軟件工程,但是!但是!但是!光有技術(shù)是不夠的,我自認為我也不是天才,我只是一個普通人,所以除了技術(shù),我應該掌握一點別的什么東西,想賺錢,卻不了解相關(guān)的知識,嗯,那就考個初級會計

    2024年01月19日
    瀏覽(31)
  • 第一節(jié) RobotFramework環(huán)境搭建

    第一節(jié) RobotFramework環(huán)境搭建

    1 robotframework的環(huán)境搭建 第一步:Python環(huán)境(建議3.6.8) ????首先安裝python ,可從如下地址下載: ????https://www.python.org/downloads/release/python-368/ ????安裝成功后配置到環(huán)境變量 ????然后啟一個cmd命令窗口驗證下是否成功安裝,成功安裝如圖所示: 第二步:robotframwwork安裝

    2023年04月09日
    瀏覽(31)
  • 相機成像原理【第一節(jié)】

    相機成像原理【第一節(jié)】

    1、膠片攝影與數(shù)碼攝影 膠片攝影是把光學鏡頭的光信號投射到膠片上, 數(shù)碼攝影是把光學鏡頭的光信號投射到傳感器上,傳感器把光信號依次處理為電信號和數(shù)字信號,片上計算機再把數(shù)字信號進行處理 2、相機的組成 2.1 只有傳感器相機的成像 一棵樹所有的點發(fā)出的光照

    2024年02月12日
    瀏覽(28)
  • 基本環(huán)境準備(第一節(jié))

    基本環(huán)境準備(第一節(jié))

    基本環(huán)境準備(第一節(jié)) 2023年8月9日 16:37 ? 1.安裝Node.js; Windows 上安裝 Node.js 你可以采用以下兩種方式來安裝。 1、Windows 安裝包(.msi) 本文實例以 v0.10.26 版本為例,其他版本類似, 安裝步驟: ? 步驟 1 : 雙擊下載后的安裝包 v0.10.26,如下所示: 步驟 2 : 點擊以上的Run(運行),將

    2024年02月13日
    瀏覽(24)
  • 第一節(jié)——單片機概述

    第一節(jié)——單片機概述

    1.MCD-51單片機 ?與8051(80C51) 兼容的主要產(chǎn)品 ATMEL公司生產(chǎn)的兼容51單片機的具體型號 2.AVR系列單片機 AVR系列是1997年ATMEL公司挪威設(shè)計中心的A先生與V先生共同研發(fā)出的精簡指令集(RISC—Reduced Instruction Set Computer)的高速8位單片機,簡稱AVR。 ?AVR單片機系列全,3個檔次,適于各

    2024年01月24日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包