实验4-2-9 梅森数 (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)。
输出格式:
按从小到大的顺序输出所有不超过2​n​​−1的梅森数,每行一个。如果完全没有,则输出“None”。
输入样例:
6

输出样例:
3
7
31

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
//判断是不是素数
(这是标准的判断素数的方法,用到了sqrt()函数,这道题输入的数值不大,所以判断素数的方法可以不这样写,但换到题数值过大了,就应该用这种方法判断素数,否则会出现超时报错)
int isprim(int n)
{
 if(n==1) return 0;
 else if(n==2) return 1;
 else
 {
  int m=sqrt((double)n);
  for(int i=2;i<=m;i++)
  {
   if(n%i==0) return 0;
  }
  return 1;
 }
}
//这是自定义的函数,我没有用pow()函数,
//因为之前写过一道题,频繁的调用pow()函数会出现超时,因为pow()函数是系统函数,调用比较麻烦,所以会超时,所以这道题就自定义了pow函数,没有调用系统的

int p(int a,int b)
{
 int sum=1;
 for(int i=1;i<=b;i++)
  sum=sum*a;
 return sum;
}
int main()
{
     int n;
  scanf("%d",&n);
  int cot=0;
  for(int i=1;i<=n;i++)
  {
   int tmp=p(2,i)-1;
   if(isprim(tmp)==1)
   { printf("%d\n",tmp);
   cot++;
   }
  }
  if(cot==0) printf("None\n");
  system("pause");
  return 0;
 }
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值