project euler 97
来源:互联网 发布:kontakt mac 音源入库 编辑:程序博客网 时间:2024/06/05 08:38
Problem 97
Large non-Mersenne prime
The first known prime found to exceed one million digits was discovered in 1999, and is a Mersenne prime of the form 26972593−1; it contains exactly 2,098,960 digits. Subsequently other Mersenne primes, of the form 2p−1, have been found which contain more digits.
However, in 2004 there was found a massive non-Mersenne prime which contains 2,357,207 digits: 28433×27830457+1.
Find the last ten digits of this prime number.
非梅森大素数
1999年人们发现了第一个超过一百万位的素数,这是一个梅森素数,可以表示为26972593−1,包含有2,098,960位数字。在此之后,更多形如2p−1的梅森素数被发现,其位数也越来越多。
然而,在2004年,人们发现了一个巨大的非梅森素数,包含有2,357,207位数字:28433×27830457+1。
找出这个素数的最后十位数字。
package projecteuler;import java.util.Arrays;import junit.framework.TestCase;public class Prj97 extends TestCase {public static final int LIMIT = 10;/** * 28433^7830457+1 */public void testLargeNonMersennePrime() {int start = 28433;int[] arr = enLarge(int2Arr(start), LIMIT);int power = 7830457;while (power > 0) {arr = multiply(arr, 2);power--;}arr = add(arr, enLarge(int2Arr(1), LIMIT));for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]);}}int[] multiply(int[] arr, int b) {int[] ret = Arrays.copyOf(arr, arr.length);for (int i = 0; i < arr.length; i++) {ret[i] *= b;}for (int i = arr.length - 1; i > 0; i--) {ret[i - 1] = ret[i - 1] + ret[i] / 10;ret[i] = ret[i] % 10;}ret[0] %= 10;return ret;}int[] add(int[] a, int[] b) {assert (a.length == b.length);int[] ret = Arrays.copyOf(a, a.length);for (int i = a.length - 1; i > 0; i--) {int val = a[i] + b[i];ret[i] = val % 10;ret[i - 1] = ret[i - 1] + val / 10;}ret[0] %= 10;return ret;}int[] int2Arr(int val) {String str = Integer.toString(val, 10);int[] ret = new int[str.length()];for (int i = 0; i < ret.length; i++) {ret[i] = Integer.parseInt(String.valueOf(str.charAt(i)));}return ret;}int[] enLarge(int[] val, int bits) {assert (val.length <= bits);int[] ret = new int[bits];for (int i = bits - val.length, j = 0; i < bits; i++, j++) {ret[i] = val[j];}return ret;}}
0 0
- project euler 97
- Project Euler 97
- Project Euler
- project euler
- Project Euler
- Project Euler .net
- Project Euler 0
- Project Euler 1-6
- Project Euler 7-10
- Euler Project Problem 6
- project euler problem 11
- project euler problem14
- Project Euler Problem 81
- Project Euler Problem 60
- Project Euler Problem 59
- Project Euler Problem 58
- Project Euler Problem 57
- Project Euler Problem 16
- QQ消息99+形成--第三方开源--BezierView
- Java解析Json字符串--复杂对象
- Builder模式
- 怎样使android的view动画循环弹动
- 获得与设置系统默认设备主音量音量大小以及静音控制函数
- project euler 97
- project euler 99
- Objective-C中的Method Swizzling
- [Java开发之路](5)异常详解
- Core Animation基础
- (转)Android如何编程设置APP安装位置(外部存储或内部存储)?
- MQTT协议笔记之连接和心跳
- 欢迎使用CSDN-markdown编辑器
- Android5.0 Battery开发(一)