形如 2^n - 1 的素数称为梅森数(Mersenne Number)。例如 2^2 - 1=3、2^3 - 1=7 都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了 2^31 - 1=2147483647 是一个素数,堪称当时世界上'已知最大素数'的一个记录。

本题要求编写C语言程序,对任一正整数n(n<20),输出所有不超过 2^n - 1 的梅森数。

输入格式: 输入在一行中给出正整数n(n<20)。

输出格式: 按从小到大的顺序输出所有不超过 2^n - 1 的梅森数,每行一个。如果完全没有,则输出'None'

内容:以下是一个示例的C语言代码实现,用于寻找不超过 2^n - 1 的梅森数:

#include <stdio.h>

int isPrime(int num) {
    /* 判断一个数是否为素数 */
    if (num < 2) {
        return 0;
    }
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) {
            return 0;
        }
    }
    return 1;
}

void findMersenneNumbers(int n) {
    /* 找出不超过 2^n - 1 的梅森数 */
    int mersenneNum;
    int found = 0;
    for (int i = 2; i <= n; i++) {
        mersenneNum = (1 << i) - 1;
        if (isPrime(mersenneNum)) {
            printf('%d
', mersenneNum);
            found = 1;
        }
    }
    if (!found) {
        printf('None
');
    }
}

int main() {
    int n;
    scanf('%d', &n);
    findMersenneNumbers(n);
    return 0;
}

你可以将以上代码保存为一个C语言源文件(例如mersenne.c),然后使用C编译器(如GCC)编译并运行该文件。程序会要求输入正整数n,并输出所有不超过 2^n - 1 的梅森数,如果没有找到梅森数,则输出'None'。

C语言程序:寻找梅森数 (Mersenne Number)

原文地址: https://www.cveoy.top/t/topic/bpfp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录