一.梅森素数

素数有无穷多个,却只有极少量的素数能表示成2p-1(p为素数)的形式。在不大于257的素数中,当p=2、3、5、7、13、17、19、31、67、127、257时,2p-1是素数,其它都是合数。前面的7个数(即2、3、5、7、13、17、19)已被前人所证实,而后面的4个数(即31、67、127、257)则是梅森自己的推断。2300多年来,人类仅发现48个梅森素数。

指数为11, 23, 29, 37, 41, 43, 47, 53, 59的时候是合数。

二.过程

  1. 给出2-64里面能符合梅森素数且是合数的指数数组。
  2. 一个一个数进行判断,用判断素数的方法,如果是合数的话就打印出它的素数乘法因子。

三.源码(超时)

超时代码:

 //
// main.cpp
// sicily-1009
//
// Created by ashley on 14-10-10.
// Copyright (c) 2014年 ashley. All rights reserved.
// #include <iostream>
#include <cmath>
using namespace std;
int primes[] = {, , , , , , , , , , , , , , , , , };
int main(int argc, const char * argv[])
{
int k;
cin >> k;
for (int i = ; primes[i] <= k; i++) {
long long number = (long long)pow(2.0, primes[i]) - ;
long long composite = number;
bool firsttime = true;
bool iscomposite = false;
for (long long j = ; j * j <= number; j++) {
if (number % j == ) {
number = number / j;
iscomposite = true;
if (firsttime) {
firsttime = false;
cout << j << " ";
} else {
cout << "* " << j << " ";
}
}
}
if (iscomposite) {
cout << "* " << number << " ";
cout << " = " << composite << " = ( 2 ^ " << primes[i] << " ) - 1" << endl;
}
}
return ;
}

通过代码:

 //
// main.cpp
// sicily-1009
//
// Created by ashley on 14-10-10.
// Copyright (c) 2014年 ashley. All rights reserved.
// #include <iostream>
#include <cmath>
using namespace std;
int primes[] = {, , , , , , , , , , , , , , , , };
int main(int argc, const char * argv[])
{
int k;
cin >> k;
for (int i = ; primes[i] <= k; i++) {
long long number = (long long)pow(2.0, primes[i]) - ;
long long composite = number;
bool firsttime = true;
bool iscomposite = false;
long long factor = ;
for (long long j = factor; j * j <= number; j++) {
if (number % j == ) {
number = number / j;
iscomposite = true;
if (firsttime) {
firsttime = false;
cout << j << " ";
} else {
cout << "* " << j << " ";
}
} //else {
// factor++;
// }
}
if (iscomposite) {
cout << "* " << number << " ";
cout << "= " << composite << " = ( 2 ^ " << primes[i] << " ) - 1" << endl;
}
}
return ;
}

四.补充:产生素数的算法:

五.指数函数:pow double pow (double base, double exponent);

六.不知道为什么要去掉61,提前算好的吗?这样有意思吗?直接switch不就好了?

Sicily-1009 梅森素数的更多相关文章

  1. nefu 120 梅森素数

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

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

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

  3. 梅森素数 判定总结 - 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是一个素 ...

  4. 梅森素数应用 nefu 120

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

  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. sicily 1009. Mersenne Composite N

    Description One of the world-wide cooperative computing tasks is the "Grand Internet Mersenne P ...

随机推荐

  1. spring AOP简单入门

    AOP(aspect oriented programming)面向切面编程. 大致意思是在方法的执行过程中织入其他要执行的方法. 项目结构图 先介绍一下通过代理的方式实现aop,几个文件和上一篇一样 ...

  2. JavaSE_ Java基础 总目录(1~6)

    JavaSE学习总结第01天_Java概述01.01 计算机概述01.02 计算机硬件和软件概述01.03 软件开发和计算机语言概述01.04 人机交互01.05 键盘功能键和快捷键01.06 如何打 ...

  3. css伪类伪元素

    在CSS中,模式(pattern)匹配规则决定哪种样式规则应用于文档树(document tree)的哪个元素.这些模式叫着选择符(selector). 一条CSS规则(rule)是选择符{属性:值; ...

  4. CSS样式的优先机制

    链接:http://www.cnblogs.com/xugang/archive/2010/09/24/1833760.html 又抓到虫子了:IE中奇怪的应用CSS的BUG:http://www.c ...

  5. MYSQL存储过程事务列子

    CREATE DEFINER=`root`@`localhost` PROCEDURE `createBusiness`(parameter1 int) BEGIN #Routine body goe ...

  6. [LeetCode]题解(python):068-Text Justification

    题目来源: https://leetcode.com/problems/text-justification/ 题意分析: 输入一个字符串数组和一个规定长度L.将这个字符串数组的元素尽可能放到长度的L ...

  7. Angulajs 定时器使用

    在Angulajs的control中,不能利用 window.setInterval和 setTimeout 来操作定时器,因为这样做,虽然设置定时器会成功,但对$scope中的数据进行设置时,不会自 ...

  8. CSDN资源页面挂掉了?

    想上传几个文件,结果打不开了

  9. linux64位系统中g++4.4.7下使用wcsncpy函数有造成段错误的BUG(其它g++版本号未知)

    一.描写叙述 眼下已经linux64位系统中g++4.4.7下发现了该bug.其它的版本号还未測试. 经測试,假设传入wcsncpy函数第一个參数(即目标缓冲区)的地址不能被4整除的话就必然会发生段错 ...

  10. DBV-00111: OCI failure (3722) (ORA-01002: fetch out of sequence解决

    在使用DBV检测segment的时候出现 DBV-00111: OCI failure (3722) (ORA-01002: fetch out of sequence)错误: 在寻找原因过程中发现相 ...