每日一数——梅森数(Mersenne number)

简介: 每日一数——梅森数(Mersenne number)

📙梅森数简介:

  • 梅森数(Mersenne number)又称麦森数,是指形如2p-1的正整数,其中指数p是素数,常记为Mp 。若其是素数,则称为梅森素数。
  • 这里还有一段关于梅森数的历史故事,这里就不过赘述,直接上链接:百度百科

📗PTA真题:

7-15 梅森数

分数4 作者 颜晖 单位 浙大城市学院

  • 形如2 n−1的素数称为梅森数(Mersenne Number)。

例如 22−1=3、23−1=7都是梅森数。
1722年,双目失明的瑞士数学大师欧拉证明了231−1=2147483647是一个素数,堪称当时世界上“已知最大素数”的一个记录。


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


输入格式:

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


输出格式:

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

输入样例:

6

输出样例:

3

7

31


代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB


📘真题解答:

#include<stdio.h>
int Prime_number(int m)//判断是否为素数
{
  int flag = 1;
  for (int i = 2; i <= m - 1; i++)
  {
    if (m % i == 0)
    {
      flag = 0;
    }
  }
  if (flag == 1)
    return 1;
  else
    return 0;
  
}
int Pow(const int x,int i)//平方数
{
  int num = x;
  if(i>1)
  for (int j=2;j<i+1;j++)
  {
    num = num * x;
  }
  else
  {
    num = x;
  }
  return num;
}

int main()
{
  int n = 0;
  int i = 0;
  int Mersenne;
  scanf("%d", &n);
  if (n == 1)
  {
    printf("None");
  }
  else
  {
    for (i = 2; i <= n; i++)
    {
      if (Prime_number(i) == 1)
      {
        Mersenne = Pow(2, i) - 1;
        printf("%d\n", Mersenne);
      }

    }
  }
  return 0;
}

重点判断:p是否为素数。

相关文章
|
4月前
K-th Number(尺取)
K-th Number(尺取)
37 0
A. Nearly Lucky Number
A. Nearly Lucky Number
53 0
|
算法
LeetCode 321. Create Maximum Number
给定长度分别为 m 和 n 的两个数组,其元素由 0-9 构成,表示两个自然数各位上的数字。现在从这两个数组中选出 k (k <= m + n) 个数字拼接成一个新的数,要求从同一个数组中取出的数字保持其在原数组中的相对顺序。 求满足该条件的最大数。结果返回一个表示该最大数的长度为 k 的数组。
67 0
LeetCode 321. Create Maximum Number
|
算法
LeetCode 405. Convert a Number to Hexadecimal
给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。
86 0
LeetCode 405. Convert a Number to Hexadecimal
|
算法
LeetCode 260. Single Number III
给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。
90 0
LeetCode 260. Single Number III
|
存储
Number 类型:
Number 类型:
99 1
Nearly Lucky Number
Nearly Lucky Number
113 0
Nearly Lucky Number
修改sequenc number
create or replace procedure CHANGE_SEQ_NUMBER( PI_SEQ_OWNER VARCHAR2 , PI_SEQNAME VARCHAR2 , PI_LAST_NUMBER NUMBER) IS V_LastValue integer; V_incr...
664 0
1117. Eddington Number(25)
#include #include #include using namespace std; bool cmp(int &a, int &b){ return a > b; } int main() { ...
832 0
1024. Palindromic Number (25)
#include #include #include #include #include using namespace std; bool judge(string s){ string st = s; reverse(st.
787 0