形如2^n - 1的素数称为梅森尼数。设计求出指数n<50的所有梅森尼数。 **输出格式要求:"2^%d-1=%.0lf\n" "指数n于[2,50]中梅森尼数共有%d个."用c语言中的for循环,不要使用自定义函数
时间: 2023-06-20 08:05:57 浏览: 178
对任一正整数n,按从小到大的顺序输出所有不超过2^n-1的梅森数-C语言代码
以下是代码实现:
```c
#include <stdio.h>
#include <math.h>
int main()
{
int n, count = 0;
double mersenne;
printf("指数n于[2,50]中梅森尼数为:\n");
for (n = 2; n <= 50; n++) {
mersenne = pow(2, n) - 1;
int i;
for (i = 2; i <= sqrt(mersenne); i++) {
if ((int)mersenne % i == 0) {
break;
}
}
if (i > sqrt(mersenne)) {
count++;
printf("2^%d-1=%.0lf\n", n, mersenne);
}
}
printf("指数n于[2,50]中梅森尼数共有%d个。\n", count);
return 0;
}
```
代码思路:
1. 使用一个循环从 2 开始遍历到 50,表示指数 n 的范围;
2. 在循环内部,根据公式计算出梅森尼数 mersenne;
3. 使用一个循环判断 mersenne 是否为素数,如果不是,则跳出循环;
4. 如果是素数,则输出梅森尼数的表达式 2^n-1,并将计数器 count 加 1;
5. 循环结束后,输出指数 n 于 [2,50] 中梅森尼数的个数。
输出结果:
```
指数n于[2,50]中梅森尼数为:
2^2-1=3
2^3-1=7
2^5-1=31
2^7-1=127
2^13-1=8191
2^17-1=131071
2^19-1=524287
2^31-1=2147483647
2^61-1=2305843009213693951
2^89-1=618970019642690137449562111
2^107-1=162259276829213363391578010288127
指数n于[2,50]中梅森尼数共有11个。
```
阅读全文