梅森素数 |
|
description |
由于梅森学识渊博,才华横溢,为人热情以及最早系统而深入地研究2p-1 型的数(其中p为素数),为了纪念他,数学界就把这种数称为“梅森数”;并以Mp 记之(其中M为梅森姓名的首字母),即Mp=2p-1 。如果梅森数为素数,则称之为“梅森素数”。 比如p=2,3,5,7时,Mp都是素数,但211-1 不是素数 。现在请你求出前N个梅森素数。 |
input |
有多组测试数据。 第一行是一个正整数T,表示测试数据的组数。接下来每组1个数p的值,这里2<= p <= 62。 |
output |
对于每组测试数据,判断Mp 是不是梅森素数,是就输出“yes ”,否就输出“no”,输出后要换行。 |
sample_input |
2 2 7 |
sample_output |
yes yes |
解题思路:
1.梅森素数的判定方法之一——Lucas—Lehmer判别法:
构造rk序列判断Mp是否是素数,同时应用大数乘积取模的算法,将乘法变成加法
参考代码+部分解释:
#include
#include
#include
#include
2.枚举判断——梅森素数表
#include
#include
#include
#include
附表:梅森素数表(1-47个)
序号
p
Mp=(2^p)-1
Mp的位数
发现时间
发现者
1
2
3
1
古代
古人
2
3
7
1
古代
古人
3
5
31
2
古代