7-7 梅森数 (20分)

7-7 梅森数 (20分)

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

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

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

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

输入样例:

6

输出样例:

3
7
31

参考代码

#include <stdio.h>
#include <math.h>

int Is_sushu(int x)
{
	int i;

	for (i = 2; i <= (int)sqrt((double)x); ++i)
	{
		if (x % i == 0)
		{
			return 0; //不是素数
		}
	}
	return 1; //是素数

}

int main()
{
	int n, cnt = 0;
	int x = 2, nn = 2, i;


	scanf("%d", &n);

	for (i = 2; i <= n; ++i)
	{
		x *= nn;
		if (Is_sushu(x - 1))
		{
			cnt++;
			printf("%d\n", x -1);
		}	
	}
	if (cnt == 0)
		printf("None\n");

	return 0;
}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 梅森数是指形如2的n次方减1的质数。例如,2^3-1=7和2^5-1=31都是梅森数。1722年,欧拉证明了2^16-1=65535是一个梅森数,并将其命名为梅森素数。后来,瑞士数学大师欧拉证明了2^31-1=2147483647也是一个梅森数,当时世界上最大的质数。 ### 回答2: 梅森数是指形如2^n-1的素数,其中n是自然数。这种数列的命名来自于法国数学家马林·梅森(Marin Mersenne),他在17世纪提出了这个问题并试图找到尽可能多的梅森素数。现在我们知道,梅森素数非常稀有,前31个梅森素数只有12个是已知的。 关于2^31-1的素性,欧拉的证明固然是一个重要的里程碑,同时也激发了人们对于梅森素数研究的兴趣。在欧拉之后,一批杰出的数学家接续其研究,包括另一位盲数学家利奥波德·奥尔斯泰因(Leopold Kronecker),他听说了欧拉的证明后,试图为之提供另一种证明,最终在两年的工作后,他放弃了证明,但证明他本人需要用到一些当时还未成熟的数学思想和概念。 梅森素数不仅是数学上一个有趣的问题,也具有很多实际应用。例如在密码学中,人们利用梅森素数的性质来构造出一类强加密算法,这种加密算法被广泛地用于保障网络传输的信息安全。此外,梅森素数还是一种有广泛研究价值的数学工具,在各种数学支中都有不少应用。 ### 回答3: 梅森数是一种特定形式的素数,即形如2的n次方减1的数,其中n为正整数。这种数学结构体现了数学的美妙之处,同时也是理解素数和大数问题的重要途径。梅森数存在的时间可以追溯到公元前300年左右的古希腊,当时欧几里德就提出了一个关于梅森数的猜想,认为所有形如2的n次方减1的数字都是素数。然而,这个猜想并不正确,因为当n等于合数时,得到的数字就不是素数了。 尽管欧几里德的猜想不成立,但对梅森数的研究一直持续到了现代。在18世纪后半期,瑞士的数学家欧拉证明了2的31次方减1是一个素数,也就是2147483647。这是一个很大的数,当时人们都认为是世界上最大的素数,欧拉因此被誉为“素数之王”。这个素数被称为梅森素数,是最早被证明是素数的梅森数之一。它还是计算机科学中常用的一个数字,因为它恰好可以用32位二进制表示。 虽然梅森素数似乎很神奇,但它实际上属于一类特殊的素数,称为梅森质数。梅森质数的形式是2的p次方减1,其中p是另一个素数。由于p必须是素数,因此梅森质数对素数的研究有一定的意义。梅森质数也是一种较为特殊的数字,很多数学家都对它进行过深入的研究。 除了欧拉以外,还有很多著名的数学家研究过梅森数,包括哥德尔、费马、黎曼等等。他们通过研究梅森数,发现了很多有趣的性质和规律,也解决了许多数学难题。因此,梅森数虽然看起来简单,但实际上是数学中非常重要的一个概念。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Hello Spring

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值