2013蓝桥杯预赛之梅森素数
2013-11-12 14:18
253 查看
标题: 梅森素数
如果一个数字的所有真因子之和等于自身,则称它为“完全数”或“完美数”
例如:6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
早在公元前300多年,欧几里得就给出了判定完全数的定理:
若 2^n - 1 是素数,则 2^(n-1) * (2^n - 1) 是完全数。
其中 ^ 表示“乘方”运算,乘方的优先级比四则运算高,例如:2^3 = 8, 2 * 2^3 = 16, 2^3-1 = 7
但人们很快发现,当n很大时,判定一个大数是否为素数到今天也依然是个难题。
因为法国数学家梅森的猜想,我们习惯上把形如:2^n - 1 的素数称为:梅森素数。
截止2013年2月,一共只找到了48个梅森素数。 新近找到的梅森素数太大,以至于难于用一般的编程思路窥其全貌,所以我们把任务的难度降低一点:
1963年,美国伊利诺伊大学为了纪念他们找到的第23个梅森素数 n=11213,在每个寄出的信封上都印上了“2^11213-1 是素数”的字样。
2^11213 - 1 这个数字已经很大(有3000多位),请你编程求出这个素数的十进制表示的最后100位。
如果一个数字的所有真因子之和等于自身,则称它为“完全数”或“完美数”
例如:6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
早在公元前300多年,欧几里得就给出了判定完全数的定理:
若 2^n - 1 是素数,则 2^(n-1) * (2^n - 1) 是完全数。
其中 ^ 表示“乘方”运算,乘方的优先级比四则运算高,例如:2^3 = 8, 2 * 2^3 = 16, 2^3-1 = 7
但人们很快发现,当n很大时,判定一个大数是否为素数到今天也依然是个难题。
因为法国数学家梅森的猜想,我们习惯上把形如:2^n - 1 的素数称为:梅森素数。
截止2013年2月,一共只找到了48个梅森素数。 新近找到的梅森素数太大,以至于难于用一般的编程思路窥其全貌,所以我们把任务的难度降低一点:
1963年,美国伊利诺伊大学为了纪念他们找到的第23个梅森素数 n=11213,在每个寄出的信封上都印上了“2^11213-1 是素数”的字样。
2^11213 - 1 这个数字已经很大(有3000多位),请你编程求出这个素数的十进制表示的最后100位。
import java.math.*; public class MeiSeng { public static void main(String[] args) { BigInteger n = new BigInteger("2"); String string; for (int i = 1; i < 11213; i++) { n = n.shiftLeft(1); } n = n.subtract(BigInteger.valueOf(1)); string = n.toString(); string = string.substring(string.length() - 100); System.out.println(string); } }
相关文章推荐
- TCP的TIME_WAIT状态
- 关于java的内存回收
- Android 4.2 Camera架构和实现
- Oracle锁机制
- ViewPager的onPageChangeListener里面的一些方法参数:
- c# 定义动态数组方法
- Excel 多列变一列(亲自实践)
- 20130910.Windows上安装和配置MongoDB
- Git深入体验之旅四:服务器上的Git
- pthread_cond_wait()
- ubuntu 安装QT 5.0出现错误:Failed to load platform plugin "xcb".
- 为 Java 程序员准备的 10 分钟 Perl 教程
- redis简介(keeper实时报表的基本部分)
- Beginning ARC in iOS 5 Tutorial Part 1
- redis简介(keeper实时报表的基本部分)
- 总结计时方式
- win7下建立与linux文件共享——samba
- [挖坑系列] 一些数学常识
- 如何制作MiniTool数据恢复工具启动光盘或启动U盘?
- viewDidUnload和dealloc的理解