梅森素数

定义:

  • if m是一个正整数 and 2^m-1是一个素数 then m是素数
  • if m是一个正整数 and m是一个素数 then M(m)=2^m-1被称为第m个梅森数
  • if p是一个素数 and M(p)是一个素数 then M(p)被称为梅森素数

Lucas-Lehmer判定法:判定一个梅森数是否是梅森素数

设p是素数,第p个梅森数为M(p)为2^p-1,r1 = 4,对于k >= 2

r(k) = r(k+1)^2-2(modM(p)), 0 <= r(k) <= M(p)

可以得到r(k)序列,则有M(p)是素数,当且仅当r(p-1) = 0(mod M(p))

推论:设p是素数,M(p)为第p个梅森数,则算法复杂度为O(n^3)

梅森素数 - nefu 120

思路:R.1 = 4;R.k = (R.k-1 ^ 2 - 2) % Mp;

如果R.p-1 == 0,则是梅森素数,否则不是。

特殊判断:p == 2,即Mp = 3是梅森素数。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib> using namespace std;
typedef long long ll; ll multi(ll a, ll b, ll m)
{
ll ret = 0;
while(b>0)
{
if(b&1)
{
ret = (ret+a)%m;
}
b >>= 1;
a = (a<<1)%m;
}
return ret;
}
int main()
{
ll sum = 1, data[66], tmp;
int n, p;
data[1] = 4;
cin >> n;
while(n--)
{
sum = 1;
cin >> p;
sum <<= p;
sum -= 1;
for(int i = 2; i <= p-1; i++)
{
tmp = multi(data[i-1],data[i-1],sum);
data[i] = (tmp-2)%sum;
}
if(p == 2)
cout << "yes" << endl;
else
{
if(data[p-1] == 0)
cout << "yes" <<endl;
else
cout << "no" << endl;
}
}
return 0;
}

模板:

long long multi(long long a, long long b, long long m){//实现a * b % m的操作,用2 * 3 = 6模拟一下就懂了
long long ans = 0;
while(b > 0){
if(b & 1) ans = (ans+a) % m;
b >>= 1;
a = (a<<1) % m;
}
return ans;
}
//判断是否是梅森素数
bool is_msPrime(int p){
long long r[70];
long long m = 1;
m <<= p; m -=1;//求出Mp;
r[1] = 4LL;
if(p == 2) return true;
for(int i = 2; i <= p-1; ++i)
r[i] = (multi(r[i-1],r[i-1],m)-2) % m;
if(r[p-1] == 0) return true;
return false;
}

梅森素数应用 nefu 120的更多相关文章

  1. nefu 120 梅森素数

    题意:给出p(1<p<=62),让你求Mp=2^p-1是否为梅森素数. 梅森素数:若p为素数,且Mp=2^p-1也是素数,则Mp为梅森素数.若p为合数,Mp=2^p-1一定为合数若p为素数 ...

  2. 梅森素数 判定总结 - Lucas-Lehmer算法 & Miller-rabin算法

    梅森素数 定义: if m是一个正整数 and 2^m-1是一个素数 then m是素数 if m是一个正整数 and m是一个素数 then M(m)=2^m-1被称为第m个梅森数 if p是一个素 ...

  3. Sicily-1009 梅森素数

    一.梅森素数 素数有无穷多个,却只有极少量的素数能表示成2p-1(p为素数)的形式.在不大于257的素数中,当p=2.3.5.7.13.17.19.31.67.127.257时,2p-1是素数,其它都 ...

  4. 加入GIMPS项目,寻找梅森素数!

    截止到目前为止人类共找到了50个梅森素数,其中最后16个梅森素数都是通过GIMPS项目找到的. 为了激励人们寻找梅森素数和促进网格技术发展,总部设在美国旧金山的电子前沿基金会(EFF)于1999年3月 ...

  5. Codeforces 225E 梅森素数

    注:梅森素数,数组表示的是2^n-1的n,指数. #include <stdio.h> #include <math.h> ; ; typedef long long ll; ...

  6. LA2955 Vivian难题——梅森素数

    题意 输入 $k$(1 \leq k \leq 100)个正整数 $p_1, p_2, ..., p_k$(1 < p_i < 2{31}),找出 $k$ 个非负整数 $e_i$ 使得 $ ...

  7. java实现第四届蓝桥杯梅森素数

    梅森素数 题目描述 如果一个数字的所有真因子之和等于自身,则称它为"完全数"或"完美数" 例如:6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 ...

  8. nefu120梅森素数

    #include<iostream> #include<cstdio> using namespace std; typedef long long ll; const int ...

  9. Project Euler 97 :Large non-Mersenne prime 非梅森大素数

    Large non-Mersenne prime The first known prime found to exceed one million digits was discovered in ...

随机推荐

  1. PHP_OS常量使用方法

    通过PHP_OS来获得当前运行的操作系统,如果直接使用将无法获取值,但有一些默认的值,使用方法如下: switch(PHP_OS) {        case 'FreeBSD':           ...

  2. Django系列

    1.Django框架 2.Django restframework 其他 django之contenttype

  3. 前端开发 - CSS - 总结

    CSS:层叠样式表(Cascading Style Sheets) 1.css的特征2.css的引入3.选择器4.伪类选择器5.伪元素选择器6.字体样式 文本样式 背景属性7.盒模型 border m ...

  4. 理解MySQL——并行数据库与分区(Partition)

    1.并行数据库 1.1.并行数据库的体系结构并行机的出现,催生了并行数据库的出现,不对,应该是关系运算本来就是高度可并行的.对数据库系统性能的度量主要有两种方式:(1)吞吐量(Throughput), ...

  5. Linux进程虚拟地址空间管理2

    2017-04-12 前篇文章对Linux进程地址空间的布局以及各个部分的功能做了简要介绍,本文主要对各个部分的具体使用做下简要分析,主要涉及三个方面:1.MMAP文件的映射过程 2.用户 内存的动态 ...

  6. understand EntityManager.joinTransaction()

    Join Transaction The EntityManager.joinTransaction() API allows an application managed EntityManager ...

  7. Ignite缓存管理初体验

    Ignite缓存管理初体验:ignite服务端配置,大家可以用参考官方进行配置(或者使用默认配置也可以). 本文中的ignite使用版本是1.7,与spring结合使用.maven依赖配置 ignit ...

  8. 记CM+kerberos环境停电后无法启动报错An error: (java.security.PrivilegedActionException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism leve

    公司突然停电,然后cm环境无法重启,报错 An error: (java.security.PrivilegedActionException: javax.security.sasl.SaslExc ...

  9. Spring第五弹—–配置Spring管理的bean的作用域和生命周期

    singleton (默认方式) 在每个Spring IoC容器中一个bean定义只有一个对象实例.默认情况下会在容器启动时初始化bean,但我们可以指定bean节点的lazy-init=“true” ...

  10. pytorch rnn 2

    import torch import torch.nn as nn import numpy as np import torch.optim as optim class RNN(nn.Modul ...