說(shuō)起來(lái)都是淚,C語(yǔ)言里獵質(zhì)數(shù),這可是門“手藝”,不,簡(jiǎn)直是門“玄學(xué)”!你問(wèn)咋個(gè)獵法?別急,咱今兒個(gè)就來(lái)聊聊這檔子事兒。
要說(shuō)質(zhì)數(shù)這玩意兒,那可是數(shù)學(xué)界里的“硬通貨”,從古至今,多少英雄好漢為之折腰。咱C語(yǔ)言里頭,最土的辦法就是“篩子”原理,也就是傳說(shuō)中的“埃拉托斯特尼篩法”。聽著高大上吧?其實(shí),說(shuō)白了就是“排除法”:列出所有小于等于n的自然數(shù),然后,從2開始,把2的倍數(shù)剔除;接著,把3的倍數(shù)剔除;然后,把5的倍數(shù)剔除……以此類推,剩下的就是質(zhì)數(shù)啦!
這“篩子”原理,聽著挺美,可效率呢?簡(jiǎn)直是“龜速”??!不信你試試,找個(gè)幾千幾萬(wàn)的質(zhì)數(shù),那得篩到猴年馬月去!可別小看這效率,程序員的時(shí)間那是“分秒必爭(zhēng)”,誰(shuí)能耗得起?
要說(shuō)獵質(zhì)數(shù)的“野路子”,那就得提提“隨機(jī)性素?cái)?shù)生成法”。這方法,聽著就有點(diǎn)“不靠譜”,可它偏偏就能在一定概率上,找出質(zhì)數(shù)。怎么個(gè)“野”法?簡(jiǎn)單來(lái)說(shuō),就是隨機(jī)生成一個(gè)大整數(shù),然后,用已知的質(zhì)數(shù)去試除,如果都除不盡,恭喜你,可能找到了一個(gè)質(zhì)數(shù)!
找到了質(zhì)數(shù),別高興得太早!這年頭,坑多著呢!還得驗(yàn)證驗(yàn)證,是不是“真貨”。這時(shí)候,你可以用“米勒-拉賓素性測(cè)試”,這可是個(gè)“大殺器”,雖然不是100%準(zhǔn)確,但誤判率低到可以忽略不計(jì)。
說(shuō)了一大堆,你可能會(huì)問(wèn),就沒(méi)有啥“捷徑”嗎?當(dāng)然有!這就得提到“優(yōu)化”二字。比如,你可以用“6k±1”的規(guī)律,只測(cè)試奇數(shù);再比如,把試除范圍縮小到sqrt(n)以內(nèi)……總之,優(yōu)化無(wú)止境,就看你的“功力”有多深!
Copyright 2024 //www.ahlmtdl.com/ 版權(quán)所有 豫ICP備2021037741號(hào)-1 網(wǎng)站地圖