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

藍橋杯之素數(shù)及相關(guān)判斷方法(看這一篇就夠了)

這篇具有很好參考價值的文章主要介紹了藍橋杯之素數(shù)及相關(guān)判斷方法(看這一篇就夠了)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、素數(shù)及相關(guān)概念

?1、素數(shù)的性質(zhì)

?2、有關(guān)素數(shù)的猜想

?二、素數(shù)的判斷方法

?1、根據(jù)性質(zhì)去判斷

?2、改進1方法(縮小比較范圍√n)

3、再次分析素數(shù)的特點,得出規(guī)律

問題:枚舉n以內(nèi)所有素數(shù)

?4、埃氏篩法(埃拉托斯特尼篩法)

5、歐拉篩法(埃氏篩法的優(yōu)化版)

三、素數(shù)相關(guān)題目

一、素數(shù)及相關(guān)概念

素數(shù)又稱質(zhì)數(shù)。一個大于1的自然數(shù),除了1和它自身外,不能被其他自然數(shù)整除的數(shù)叫做素數(shù);否則稱為合數(shù)(規(guī)定1既不是質(zhì)數(shù)也不是合數(shù))。

?1、素數(shù)的性質(zhì)

  1. 質(zhì)數(shù)只有兩個因數(shù):1和本身。
  2. 任何大于1的自然數(shù),要么本身是質(zhì)數(shù),要么可以分解為幾個質(zhì)數(shù)之積,且這種分解是唯一的。
  3. 質(zhì)數(shù)的個數(shù)是無限多的。
  4. 若n為正整數(shù),在n2到(n+1)2之間至少有一個質(zhì)數(shù)
  5. 若n為大于等于2的正整數(shù),則n到n!之間至少有一個質(zhì)數(shù)
  6. 若質(zhì)數(shù)p為不超過n(n≥4)的最大質(zhì)數(shù),則p>n/2
  7. 所有大于10的質(zhì)數(shù)中,個位數(shù)只有1,3,7,9
  8. 在一個大于1的數(shù)a和它的2倍之間(即區(qū)間(a, 2a]中)必存在至少一個素數(shù)。
  9. 存在任意長度的素數(shù)等差數(shù)列。

?2、有關(guān)素數(shù)的猜想

  1. 哥德巴赫猜想:是否每個大于2的偶數(shù)都可寫成兩個素數(shù)之和?
  2. 孿生素數(shù)猜想孿生素數(shù)就是差為2的素數(shù)對,例如11和13。是否存在無窮多的孿生素數(shù)?
  3. 斐波那契數(shù)列內(nèi)是否存在無窮多的素數(shù)?
  4. 是否有無窮多個的梅森素數(shù)?(所謂梅森數(shù),是指形如2?-1的一類數(shù),其中指數(shù)p是素數(shù),常記為Mp。如果梅森數(shù)是素數(shù),就稱為梅森素數(shù)。)
  5. 是否存在無窮個形式如X2+1素數(shù)?

?趣味數(shù)學(xué)

?3到881之內(nèi)的孿生素數(shù)

藍橋杯之素數(shù)及相關(guān)判斷方法(看這一篇就夠了)

2至54的素數(shù)

藍橋杯之素數(shù)及相關(guān)判斷方法(看這一篇就夠了)

?二、素數(shù)的判斷方法

?1、根據(jù)性質(zhì)去判斷

我們都知道素數(shù)的性質(zhì)是除了1和它自身外,不能被其他自然數(shù)整除,所以第一個方法就是從2到n-1一個個去判斷是否有數(shù)可以除以該數(shù)且為0,即 n%i==0;如果有則不是素數(shù),如果遍歷一遍都沒有數(shù)可以整除它,則就是素數(shù)。

public class Main {
    public static boolean isPrime(int n){
        if (n <= 3) {
            return n > 1;
        }
        for (int i=2;i<n;i++){
            if (n%i==0)
                return false;
        }
        return true;
    }
    public static void main(String[] args) {
       for (int i=2;i<100;i++){//找2到100之間的素數(shù)
           if (isPrime(i))
                System.out.print(i+" ");
           //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
       }
    }
}

?2、改進1方法(縮小比較范圍√n)

看了方法一,大家覺得浪費了很多時間,不必一直循環(huán)到n-1,因為如果a*b=n,則其中必有一個大于sqrt(n)?,一個小于sqrt(n),,所以我們把循環(huán)范圍縮小到√n。

public class Main {
    public static boolean isPrime(int n){
        if (n <= 3) {
            return n > 1;
        }
        for (int i=2;i<=Math.sqrt(n);i++){
            if (n%i==0)
                return false;
        }
        return true;
    }
    public static void main(String[] args) {
       for (int i=2;i<100;i++){//找2到100之間的素數(shù)
           if (isPrime(i))
                System.out.print(i+" ");
           //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
       }
    }
}

3、再次分析素數(shù)的特點,得出規(guī)律

其實素數(shù)還有一個特點,就是它總是等于 6x-1 或者 6x+1,其中 x 是大于等于1的自然數(shù)。
這個結(jié)論其實很容易論證。首先 6x 肯定不是質(zhì)數(shù),因為它能被 6 整除;然后6x+2 肯定也不是質(zhì)數(shù),因為它還能被2整除;依次類推,6x+3 肯定能被 3 整除;6x+4 肯定能被 2 整除。那么,就只有 6x+1 和 6x+5 (相當(dāng)于6x-1) 可能是質(zhì)數(shù)了。所以循環(huán)的步長可以設(shè)為 6,然后每次只判斷 6 兩側(cè)的數(shù)即可。我們也可以通過孿生素數(shù)可以很清楚的驗證這個規(guī)律。

藍橋杯之素數(shù)及相關(guān)判斷方法(看這一篇就夠了)

?這樣我們又可以更加便捷的找出想要找的素數(shù)。

public class Main {
    public static boolean isPrime(int num) {
        if (num <= 3) {
            return num > 1;
        }
        // 不是在6的倍數(shù)兩側(cè)的一定不是素數(shù)數(shù)
        if (num % 6 != 1 && num % 6 != 5) {
            return false;
        }
        //同樣的在6的倍數(shù)兩側(cè)的數(shù)也不一定是素數(shù),還是要判斷
        int sqrt = (int) Math.sqrt(num);
        for (int i = 5; i <= sqrt; i += 6) {
            if (num % i == 0 || num % (i + 2) == 0) {
                return false;
            }
        }
        return true;
    }
    public static void main(String[] args) {
       for (int i=2;i<100;i++){//找2到100之間的素數(shù)
           if (isPrime(i))
                System.out.print(i+" ");
           //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
       }
    }
}

問題:枚舉n以內(nèi)所有素數(shù)

上面方法都是用來判斷是不是,但是當(dāng)叫你求n內(nèi)素數(shù)的個數(shù)時,這樣一個個去判斷的時間復(fù)雜度過大,太費時間,這就需要下面的方法了。

?4、埃氏篩法(埃拉托斯特尼篩法)

埃氏篩法就是先把所有整數(shù)列出來,然后把2的倍數(shù)全部剔除,然后是三的,以此類推,遍歷所有素數(shù),把倍數(shù)全部劃去。對于某個數(shù)字i,如果沒被劃去,他一定是素數(shù),因為他不是任何2到i-1數(shù)字的倍數(shù)。然后就開始劃它的倍數(shù)就好。

import java.util.Arrays;

public class Main {
    static int isPrime(int n)
    {
        int[] b=new int[n+1];//通過數(shù)組b的值,為1就是素數(shù)
        int p=0;//記錄素數(shù)個數(shù)
        for(int i=0;i<n+1;i++)
            b[i]=1;
        b[0]=0;
        b[1]=0;
        //準(zhǔn)備完畢
        for(int i=2;i<=n;i++){
            if(b[i]!=0){
                p++;//i是素數(shù)即i++;然后剔除i的倍數(shù)
                for(int j=2*i;j<=n;j+=i)
                    b[j]=0;//剔除倍數(shù)
            }
        }
        return p;//返回素數(shù)個數(shù)
    }
    public static void main(String[] args) {
       //找2到100之間的素數(shù)
        System.out.print(isPrime(100));//25
        //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
       }
}

或者使用boolean值來進行辨別是否為素數(shù),我們可以埃氏篩法把所有素數(shù)找出來,然后繼續(xù)O(1)操作來判斷i是否為素數(shù)。

public class Main {
    public static void main(String[] args) {
        boolean[] isPrime=new boolean[100+1];  //true為素數(shù)
        isPrime[0]=false;
        isPrime[1]=false;
        for (int i=2;i<100+1;i++) isPrime[i]=true;
        for (int i=2;i<100+1;i++){
            if (isPrime[i]){
                for (int j=2;i*j<100+1;j++)
                    isPrime[i*j]=false;
            }
        }
    }
}

?很上面一樣可以進行優(yōu)化不必一直循環(huán)到n,到Math.sqrt(n)就可以。

public class Main {
     public static void main(String[] args) {
        boolean[] isPrime=new boolean[100+1];  //true為素數(shù)
        isPrime[0]=false;
        isPrime[1]=false;
        for (int i=2;i<100+1;i++) isPrime[i]=true;
        for (int i=2;i<Math.sqrt(101);i++){
            if (isPrime[i]){
                for (int j=2;i*j<100+1;j++)
                    isPrime[i*j]=false;
            }
        }
        for (int i=2;i<isPrime.length;i++){
            if (isPrime[i])
                System.out.print(i+" ");
            //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 
        }
    }
}

5、歐拉篩法(埃氏篩法的優(yōu)化版)

在埃氏篩法中,由于一個數(shù)可以既是一個素數(shù)的倍數(shù),又是另一個素數(shù)的倍數(shù),可以發(fā)現(xiàn)這會出現(xiàn)重復(fù)標(biāo)記的情況,即同一個數(shù)被篩掉了不止一次,如果n值過大,則也是一筆不小的時間開銷

歐拉篩法就是在埃氏算法的基礎(chǔ)上多了判斷的步驟,從而消去了這種重復(fù)標(biāo)記的情況,核心思路是用合數(shù)中的一個因數(shù)篩掉這個合數(shù)。

public static void eulerSieve(int n){
        boolean[] isPrime = new boolean[n+1]; 
        int[] Prime=new int[n];//存放素數(shù)的數(shù)組,false為素數(shù)
        isPrime[0] = isPrime[1] = true;//數(shù)字0和1都不是素數(shù),所以賦true
        int count = 0;
        Prime[count++] = 2;//把2放進素數(shù)表

        for (int i = 2; i <n+1; i++) {
            if (!isPrime[i])//若當(dāng)前數(shù)是素數(shù)
                Prime[count++] = i;//則存入素數(shù)數(shù)組
            for (int j = 0; j < count && Prime[j] * i < n+1; j++) {
                isPrime[i * Prime[j]] = true;
                if (i % Prime[j] == 0)
                    break;//避免重篩,使得程序更有效率
            }
        }
    }

可以看?歐拉篩法尋找10以內(nèi)的素數(shù),可以發(fā)現(xiàn)完全沒有重復(fù)判斷的數(shù),因為多了一個判斷,大幅增加了篩素數(shù)的速度,時間復(fù)雜度為O(n)。

藍橋杯之素數(shù)及相關(guān)判斷方法(看這一篇就夠了)

三、素數(shù)相關(guān)題目

藍橋杯之找素數(shù)(填空題+編程題)_冷兮雪的博客-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-414318.html

到了這里,關(guān)于藍橋杯之素數(shù)及相關(guān)判斷方法(看這一篇就夠了)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • ElasticSearch常見用法,看這一篇就夠了

    ElasticSearch常見用法,看這一篇就夠了

    2024送書福利正式起航 關(guān)注「哪吒編程」,提升Java技能 文末送3本《一本書講透Elasticsearch:原理、進階與工程實踐》 大家好,我是哪吒。 ElasticSearch是一款由Java開發(fā)的開源搜索引擎,它以其出色的實時搜索、穩(wěn)定可靠、快速安裝和方便使用的特性,在Java開發(fā)社區(qū)中贏得了廣

    2024年03月19日
    瀏覽(94)
  • 超圖(HyperGraph)學(xué)習(xí),看這一篇就夠了

    超圖(HyperGraph)學(xué)習(xí),看這一篇就夠了

    最近事多,好久沒更新了,隨便寫寫(Ctrl+V)點 一、超圖定義 通常圖論中的圖,一條edge只能連接2個vertex,在超圖中,不限量 如何理解呢,就用我正在做的KT問題來看:7道題目-7個頂點;4種概念-4條超邊,其中第1,2,3題都是考察概念1的,則構(gòu)建一個包含了這仨的超邊,以此類

    2024年02月02日
    瀏覽(27)
  • SourceTree使用看這一篇就夠了

    SourceTree使用看這一篇就夠了

    ?你夢想有一天成為git大師,然而面對復(fù)雜的git命令,你感覺TMD這我能記得住嗎?你曾經(jīng)羨慕從命令行敲git命令,才會更加炫酷,然而時間一長,TMD命令我有忘了。那么今天我介紹的這款工具會讓你從git命令中解救出來,這就是git可視化工具SourcTree。 事實上Git的功能十分強大

    2024年02月08日
    瀏覽(23)
  • Docker Volume 看這一篇就夠了

    Docker Volume 看這一篇就夠了

    默認情況下,在容器內(nèi)創(chuàng)建的所有文件都存儲在可寫容器層上。這意味著: 當(dāng)該容器不再存在時,數(shù)據(jù)不會持續(xù)存在,并且如果另一個進程需要數(shù)據(jù),則可能很難將數(shù)據(jù)從容器中取出。 容器的可寫層與運行容器的主機緊密耦合。您無法輕松地將數(shù)據(jù)移動到其他地方。 寫入容

    2024年02月02日
    瀏覽(106)
  • Linux 命令大全(看這一篇就足夠)

    Linux 命令大全(看這一篇就足夠)

    目錄 第一章:Linux目錄結(jié)構(gòu) 第一節(jié):基本介紹 第二節(jié):Linux具體目錄結(jié)構(gòu) 第二章:Linux常用命令 第一節(jié):目錄處理命令 2.1.1?命令格式 2.1.2 列出目錄的內(nèi)容:ls 命令 2.1.3 創(chuàng)建目錄:mkdir 命令 2.1.4 切換工作目錄:cd 命令 2.1.5 顯示當(dāng)前路徑:pwd 命令? 2.1.6 刪除空目錄:rmdir 命

    2024年02月03日
    瀏覽(56)
  • CAS自旋鎖,看這一篇就夠了

    前序 時隔多年,杰倫終于出了新專輯,《最偉大的作品》讓我們穿越到1920年,見到了馬格利特的綠蘋果、大利的超現(xiàn)實、常玉畫的大腿、莫奈的睡蓮、徐志摩的詩… 他說“最偉大的作品”并不是自己的歌,而是這個世界上最偉大的藝術(shù)作品們。 為什么要寫CAS自旋鎖呢?最近

    2023年04月08日
    瀏覽(19)
  • 還不會拓撲排序?看這一篇就夠了

    還不會拓撲排序?看這一篇就夠了

    拓撲排序是一種有向無環(huán)圖(DAG)的頂點排序方法,它將一個有向無環(huán)圖中的所有頂點排成一個線性序列,使得圖中 任意一條有向邊上的起點排在終點的前面 。 這樣說還不夠具體,我們先來看一個例子。假設(shè)某大學(xué)的課程安排如下: 課程編號 課程名稱 先修課程 1 1 1 高等數(shù)

    2023年04月08日
    瀏覽(74)
  • 還不會二分查找?看這一篇就夠了

    還不會二分查找?看這一篇就夠了

    二分查找分為整數(shù)二分和浮點數(shù)二分,一般所說的二分查找都是指整數(shù)二分。 滿足單調(diào)性的數(shù)組一定可以使用二分查找,但可以使用二分查找的數(shù)組不一定需要滿足單調(diào)性。 不妨假設(shè)我們找到了條件 C 1 C_1 C 1 ? ,它和它的 對立條件 C 2 C_2 C 2 ? 能夠?qū)?shù)組 a a a 一分為二,

    2024年01月19日
    瀏覽(27)
  • C++異常處理詳解 看這一篇就夠了

    C++異常處理詳解 看這一篇就夠了

    在程序運行的過程中,我們不可能保證我們的程序百分百不出現(xiàn)異常和錯誤,那么出現(xiàn)異常時該怎么報錯,讓我們知道是哪個地方錯誤了呢? C++中就提供了異常處理的機制。 throw : 當(dāng)問題出現(xiàn)時,程序會拋出一個異常。這是通過使用 throw 來完成的。 catch : 在您想要處理

    2024年02月14日
    瀏覽(30)
  • Java迭代器詳解,看這一篇就夠了

    Java迭代器詳解,看這一篇就夠了

    迭代器 是屬于 設(shè)計模式 之一, 迭代器模式 提供了一種方法來順序訪問一個聚合對象中各個元素,而不保留該對象的內(nèi)部表示。 1) Iterator對象 稱為 迭代器 ,主要用于遍歷 Collection集合 中的元素。 2)所有實現(xiàn)了 Collection接口 的集合類都有一個 iterator() 方法,用以返回一個

    2024年02月02日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包