问题描述

梅森数(Mersenne Prime)指的是形如2n-1的正整数,其中指数n是素数,即为Mn。如果一个梅森数是素数,则称其为梅森素数。例如22-1=3、23-1=7都是梅森素数。

当n=2,3,5,7时,Mn 都是素数,但n=11时,Mn=M11=211-1=2047=23X89,显然不是梅森素数。

1722年,瑞士数学大师欧拉证明了231-1=2147483647是一个素数,它共有10位数,成为当时世界上已知的最大素数。

迄今为止,人类仅发现了47个梅森素数。梅森素数历来都是数论研究中的一项重要内容,也是当今科学探索中的热点和难点问题。

试求出指数n<20的所有梅森素数。

问题分析

要编程求解的问题是找出指数n<20的所有梅森素数。根据梅森素数的定义,我们可以先求出n<20的所有梅森数,再逐一判断这些数是否为素数。如果是素数,则表示该数为梅森素数,打印输出即可;否则不是梅森素数。

算法设计

要求出n<20的所有梅森数,因此在本题的算法设计中需要釆用循环结构。

设变量mp存储梅森数,整数i表示指数,其取值从2〜19,i每变化一次,都相应的计算出一个梅森数,存放在mp中。对每次计算得到的当前mp值,都调用函数prime()进行判断。

在判断mp是否为素数时,可以定义一个函数prime(),每次都将mp的当前值作为实参传递给函数prime(),并判断是否为素数。如果n为素数,则prime()函数返回值为1,否则prime()函数返回值为0。

若prime()函数返回值为1,则当前mp为梅森素数,应该将其输出;若prime()函数返回值为0,则当前mp不是梅森素数。

程序流程图:

下面是完整的代码:

#include

#include

int prime(int n)

{

int i;

long k;

k=sqrt(n)+1;

for(i=2; i<=k; i++)

if(n%i == 0)

return 0;

return 1;

}

int main()

{

int mp, n=0, i;

printf("Mersenne Prime:\n");

for(i=2; i<=20; i++)

{

mp=pow(2,i)-1;

if( prime(mp) )

{

n++;

printf("M(%d)=%d", i, mp);

printf("\n");

}

}

printf("the number of Mersenne Prime less than 20 is:%d\n", n);

return 0;

}

运行结果:

Mersenne Prime:

M(2)=3

M(3)=7

M(5)=31

M(7)=127

M(13)=8191

M(17)=131071

M(19)=524287

the number of Mersenne Prime less than 20 is:7

java梅森素数_C语言实现求梅森素数代码解析相关推荐

  1. python程序判断梅森素数_C语言实现求梅森素数的代码与解析

    问题描述 梅森数(Mersenne Prime)指的是形如2n-1的正整数,其中指数n是素数,即为Mn.如果一个梅森数是素数,则称其为梅森素数.例如22-1=3.23-1=7都是梅森素数. 当n=2, ...

  2. java 语言如何判断素数_C语言实验之判断素数(循环结构java)方法讲解

    C语言实验之判断素数(循环结构java)方法讲解 Problem Description 从键盘上输入任意一个正整数,然后判断该数是否为素数. 如果是素数则输出"This is a prim ...

  3. 俄罗斯套娃素数c语言解法,求俄罗斯套娃素数(BFS)

    求俄罗斯套娃素数(BFS) 求俄罗斯套娃素数(BFS) [var1] #pragma GCC optimize(2) #include #include #include #include #incl ...

  4. java pnpoly算法_C语言实现的PNPoly算法代码例子

    写C语言的实验用到的一个算法,判断一个点是否在多边形的内部.C的代码如下: int pnpoly(int nvert, float *vertx, float *verty, float testx, ...

  5. 水仙花数c语言程序解析,C语言求水仙花数代码解析

    原标题:C语言求水仙花数代码解析 水仙花数 "水仙花数"又称为"阿姆斯特朗数".如果一个n(n≥3)位数的各位数字的n次幂之和等于该数本身,则该数称为" ...

  6. java求1000以内的回文素数_C语言求回文素数

    任意的整数,当从左向右读与从右向左读是相同的,且为素数时,称为回文素数.求 1000 以内的所有回文素数. 算法思想 实例的重点是判断一个数是否是回文素数.要输出 1000 以内的所有回文素数,首先应 ...

  7. c语言求素数_C语言 | 求100~200的素数

    "要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人-万中无一" --包租婆这道理放在C语言学习上也一并受用.在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语 ...

  8. java求学生的总分和平均分_c语言中求课程总分、平均分。学生总分及平均分

    c语言中求课程总分.平均分.学生总分及平均分 1. #include stdio.h int main(void) { int i, j; int a[6][2]; puts("please ...

  9. 判断输入的整数是否为素数_C语言 | 判断是否素数

    "要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人-万中无一" --包租婆这道理放在C语言学习上也一并受用.在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语 ...

最新文章

  1. html上传文件与后台处理,关于前端html图片和文件上传和后台接收方法
  2. Python果然不得了,数独都能轻松解决?python秒解数独了解下?
  3. 洛谷 3953 NOIP2017提高组Day1 T3 逛公园
  4. php小于neq qe,PHP模板判断语句eq相等 ne、neq不相等, gt大于, lt小于
  5. matlab是以什么运算为基础,matlab基础练习题及答案讲解
  6. navicat无法连接mysql
  7. Spring MVC类型转换的意义
  8. php 子文件夹如何定义,php-子文件夹的重写规则
  9. 射手科技公开课第一辑 『项目管理和代码规范』
  10. BZOJ2655 calc(动态规划+拉格朗日插值法)
  11. TF-Lite极简参考-模型转换
  12. 计算机思维和数学的那些事
  13. 《数据库原理》课程设计报告
  14. 云闪付app怎么删除常用转账人?云闪付转账记录怎么删除?
  15. 富文本编辑器Froala Editor v3.x 使用
  16. 速腾聚创三维激光雷达 实现cartographer 建图复现工作(代完成)
  17. 电脑技术分享:电脑怎样录制桌面视频
  18. 网站建设有哪些核心要点和方法
  19. 计算机桌面进入安全模式,电脑如何进入安全模式呢?
  20. Window7 USB HID 即插即用触摸屏 原始数据获取

热门文章

  1. VR全景加盟要注意什么,全景加盟如何选择?
  2. Web前端入门 HTML
  3. 一篇搞懂关于计算机的减法运算
  4. Iconfont字体图标
  5. Linux进程相关命令-kill、killall、ps、netstat
  6. 别人的 阿里校招 面试总结
  7. SurfaceView源码分析
  8. erwin7.3中文版
  9. python实现人机猜拳游戏(结构清晰)
  10. 第八章 可编程接口芯片及应用【微机原理】