C语言程序:寻找梅森数 (Mersenne Number)
形如 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'。
原文地址: https://www.cveoy.top/t/topic/bpfp 著作权归作者所有。请勿转载和采集!