最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c++ 梅森數(shù)源碼示例解析

 更新時(shí)間:2022年12月29日 11:06:35   作者:heart_6662  
這篇文章主要為大家介紹了c++ 梅森數(shù)源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

題目:

要求:按從小到大的順序輸出所有不超過2……n−1的梅森數(shù),每行一個(gè)。如果完全沒有,則輸出“None”。

別人的例子

#include <math.h>
int main() {
    int n = 0, m = 0,  e = 0,h=0;
    int i = 0;
    scanf("%d", &n);
    int a = (int)pow(2, n) - 1;//最大數(shù)
    for (i = 2; i < a; i++) {//數(shù)字挨個(gè)增加
        m = 0;
        for (e = 2; e <= sqrt(i); e++) {//判斷是不是為素?cái)?shù)
            if (i % e == 0) {
                m++;
                break;
            }
        }
        if (m == 0) {
            for (e = 1; e < n; e++) {
                if (2.0 == pow(i + 1, 1.0 / (1.0 * e))) {//判斷是否滿足另一個(gè)條件
                    printf("%d\n", i);
                    h++;
                    break;
                }
            }
        }
    }
    if (h == 0) {
        printf("None");
    }
    return 0;
}

發(fā)現(xiàn)報(bào)錯(cuò): 分析錯(cuò)誤: 我感覺可能是求梅森數(shù)的思路不對(duì)。

1.for循環(huán)里的i是否需要在循環(huán)外聲明。

2.判斷i是否為素?cái)?shù)的方式可以改為使用線性篩法。

3.在判斷梅森數(shù)時(shí),使用pow函數(shù)求2的冪次方會(huì)影響精度,建議使用位運(yùn)算進(jìn)行優(yōu)化。

4.如果完全沒有梅森數(shù),應(yīng)該在循環(huán)外輸出“None”。

我的代碼

    #include <stdio.h>
 #include <math.h>
  int main() {
  int n = 0, p = 0, flag = 0;
  scanf("%d", &n);
  for (p = 2; p <n; p++) {
  int i = 2, m = 2; //m為當(dāng)前計(jì)算出的2^p-1的值
  //線性篩法求2^p-1是否為素?cái)?shù)
  while (i <= sqrt(m)) {
  if (m % i == 0) {
  break; //不是素?cái)?shù),跳出循環(huán)
  }
  i++;
  }
  //如果i>sqrt(m)說明m是素?cái)?shù)
  if (i > sqrt(m)) {
  printf("%d\n", m);
  flag = 1; //標(biāo)記是否有梅森數(shù)
  }
  m = (m << 1) + 1; //計(jì)算下一個(gè)2^p-1的值
  }
  if (!flag) {
  printf("None");
  }
  return 0;
  }

顯示部分正確修改過的代碼

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n;
cin >> n;
bool flag = false; // 記錄是否有梅森數(shù)
for (int i = 2; i < n; i++)
{
    bool isPrime = true; // 記錄i是否為素?cái)?shù)
    for (int j = 2; j <= sqrt(i); j++)
    {
        if (i % j == 0)
        {
            isPrime = false;
            break;
        }
    }
    if (isPrime) // 如果i為素?cái)?shù)
    {
        int m = i; // 記錄i的值
        int sum = 0; // 記錄i的位數(shù)和
        while (m > 0)
        {
            sum += m % 10;
            m /= 10;
        }
        if (sum == i) // 如果i的位數(shù)和等于i本身,則為梅森數(shù)
        {
            cout << i << endl;
            flag = true; // 有梅森數(shù)
        }
    }
}
if (!flag) // 如果沒有梅森數(shù)
{
    cout << "None" << endl;
}
return 0;
}

以上就是c++ 梅森數(shù)源碼示例解析的詳細(xì)內(nèi)容,更多關(guān)于c++ 梅森數(shù)源的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++消息隊(duì)列(定義,結(jié)構(gòu),如何創(chuàng)建,發(fā)送與接收)

    C++消息隊(duì)列(定義,結(jié)構(gòu),如何創(chuàng)建,發(fā)送與接收)

    這篇文章主要介紹了C++消息隊(duì)列(定義,結(jié)構(gòu),如何創(chuàng)建,發(fā)送與接收),消息隊(duì)列是一種先進(jìn)先出的隊(duì)列型數(shù)據(jù)結(jié)構(gòu),實(shí)際上是系統(tǒng)內(nèi)核中的一個(gè)內(nèi)部鏈表
    2022-08-08
  • 帶你粗略了解C++中的深淺拷貝

    帶你粗略了解C++中的深淺拷貝

    這篇文章主要給大家介紹了關(guān)于c++中深淺拷貝以及寫時(shí)拷貝實(shí)現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • C++簡(jiǎn)單實(shí)現(xiàn)的全排列算法示例

    C++簡(jiǎn)單實(shí)現(xiàn)的全排列算法示例

    這篇文章主要介紹了C++簡(jiǎn)單實(shí)現(xiàn)的全排列算法,結(jié)合實(shí)例形式分析了C++排序操作的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07
  • 基于OpenCV?差分法實(shí)現(xiàn)綠葉識(shí)別

    基于OpenCV?差分法實(shí)現(xiàn)綠葉識(shí)別

    物體識(shí)別是圖像處理學(xué)在現(xiàn)實(shí)生活中較多的應(yīng)用之一,本文提供了一種相對(duì)簡(jiǎn)單的思路來實(shí)現(xiàn)綠葉識(shí)別,適合初學(xué)圖像處理的新人研究參考。感興趣的同學(xué)可以關(guān)注一下
    2021-11-11
  • C語(yǔ)言可變長(zhǎng)的參數(shù)列表詳解

    C語(yǔ)言可變長(zhǎng)的參數(shù)列表詳解

    這篇文章主要為大家介紹了C語(yǔ)言可變長(zhǎng)的參數(shù)列表,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 利用C++實(shí)現(xiàn)矩陣的相加/相稱/轉(zhuǎn)置/求鞍點(diǎn)

    利用C++實(shí)現(xiàn)矩陣的相加/相稱/轉(zhuǎn)置/求鞍點(diǎn)

    利用C++實(shí)現(xiàn)矩陣的相加/相稱/轉(zhuǎn)置/求鞍點(diǎn)。需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-10-10
  • cocos2dx實(shí)現(xiàn)橡皮擦效果以及判斷是否擦除完畢

    cocos2dx實(shí)現(xiàn)橡皮擦效果以及判斷是否擦除完畢

    這篇文章主要為大家詳細(xì)介紹了cocos2dx實(shí)現(xiàn)橡皮擦效果以及判斷是否擦除完畢,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • C++ Boost Tokenizer使用詳細(xì)講解

    C++ Boost Tokenizer使用詳細(xì)講解

    Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱
    2022-11-11
  • C++ 中封裝的含義和簡(jiǎn)單實(shí)現(xiàn)方式

    C++ 中封裝的含義和簡(jiǎn)單實(shí)現(xiàn)方式

    這篇文章主要介紹了C++ 中封裝的含義和簡(jiǎn)單實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C語(yǔ)言實(shí)現(xiàn)自動(dòng)發(fā)牌程序

    C語(yǔ)言實(shí)現(xiàn)自動(dòng)發(fā)牌程序

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)自動(dòng)發(fā)牌程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04

最新評(píng)論

巴里| 杭锦后旗| 兰考县| 钟山县| 万全县| 留坝县| 新民市| 仪征市| 伊金霍洛旗| 大邑县| 石柱| 泾源县| 佛学| 奉节县| 巴里| 马尔康县| 高碑店市| 大同市| 尤溪县| 乐山市| 桃江县| 五华县| 阜新市| 昌邑市| 嘉兴市| 中阳县| 迭部县| 报价| 溧水县| 乌什县| 抚远县| 广德县| 香格里拉县| 阿克陶县| 林芝县| 易门县| 罗甸县| 乐清市| 海南省| 荆州市| 集安市|