代码:


import java.math.BigInteger;
import java.security.SecureRandom;class PollardRho
{private final static BigInteger ZERO = new BigInteger("0");private final static BigInteger ONE  = new BigInteger("1");private final static BigInteger TWO  = new BigInteger("2");private final static SecureRandom random = new SecureRandom();public static BigInteger rho(BigInteger N) {BigInteger divisor;BigInteger c  = new BigInteger(N.bitLength(), random);BigInteger x  = new BigInteger(N.bitLength(), random);BigInteger xx = x;if (N.mod(TWO).compareTo(ZERO) == 0) return TWO;do {x  =  x.multiply(x).mod(N).add(c).mod(N);xx = xx.multiply(xx).mod(N).add(c).mod(N);xx = xx.multiply(xx).mod(N).add(c).mod(N);divisor = x.subtract(xx).gcd(N);} while((divisor.compareTo(ONE)) == 0);return divisor;}public static void factor(BigInteger N) {if (N.compareTo(ONE) == 0) return;if (N.isProbablePrime(20)) { System.out.println(N); return; }BigInteger divisor = rho(N);factor(divisor);factor(N.divide(divisor));}public static void main(String[] args) {BigInteger N = BigInteger.valueOf(120);factor(N);}
}


pollard_rho大数分解Java版相关推荐

  1. 大数开方(Java版)

    题目:大数开方 Java代码:适合被开方数不超过1000位的. import java.util.*; import java.math.*; public class Main { public s ...

  2. 大数相乘 java_大数相乘——java版

    之前面试的时候被问到两个很大很大的数相乘在java中怎么把它算出来,显然不能直接相乘,当时我只回答出来了用BigInteger,然而不是最好的答案.大数相乘的核心思想是将数字转化为字符串,然后逐位相乘 ...

  3. java中大数开方_大数开方(Java版)

    Java代码:适合被开方数不超过1000位的. import java.util.*; import java.math.*; public class Main { public static vo ...

  4. 超大数相乘的java代码,java版大数相乘

    在搞ACM的时候遇到大数相乘的问题,在网上找了一下,看到了一个c++版本的 用java搞了一个版本 这里说一下思路 将数字已字符串形式接收,转换成int[]整型数组,然后num1[],num2[]依次 ...

  5. 【译】数据结构中关于树的一切(java版)

    你每天都那么努力,忍受了那么多的寂寞和痛苦.可我也没见你有多优秀. https://user-gold-cdn.xitu.io/2018/4/17/162d1b4c1dd95fa3?w=1080&am ...

  6. Java版战棋(SLG)游戏AI及寻径处理入门

    代码下载地址:http://download.csdn.net/source/1047937 SLG或者说战棋游戏,在大多数英文站点是归类到Simulation Game的(包括模拟城市之类的纯SIM ...

  7. PARI/GP 语言:从入门到实现大素数判定与大数分解

    PARI/GP 语言:从入门到实现大素数判定与大数分解 一.PARI/GP简介 二.下载 PARI/GP 三.PARI/GP 编程入门 1. 近似 2. 运算尽量被允许 3. 向量 4. 矩阵 四.大 ...

  8. 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)

    常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...

  9. java扫雷设计_毕业设计Java版扫雷的设计与实现介绍

    毕业设计Java版扫雷的设计与实现介绍 java语言eclipse环境 源码+精品文档 价格98元 扫雷是一款玩法相当简单的大众化的小游戏,游戏的胜利条件是在最短的时间内根据点击格子出现的数字找出所有 ...

最新文章

  1. 成功解决ValueError: Unable to add relationship because child variable ‘ID‘ in ‘cats_df‘ is also its inde
  2. 【原创】backbone1.1.0源码解析之Events
  3. css文字下滑,CSS3 文本下落渐变动效
  4. MapReduce案例-wordcount-Reduce阶段代码
  5. 深度学习之卷积神经网络(10)CIFAR10与VGG13实战
  6. Flutter之Decoration
  7. Spring Security与Maven教程
  8. springmvc项目在启动完成之后执行一次方法_SpringMVC源码分析
  9. solr 5.0.0 bin/start脚本详细解析
  10. python字符串赋值列表_Python 第二篇:python字符串、列表和字典的基本操作方法...
  11. Win7快速启动栏恢复方法
  12. 你还在找全国省市县大全吗
  13. 生物特征识别技术的标准化工作
  14. char ch= 中 什么意思java_问一下java里的char到底是什么
  15. 多台电脑共享上网的方法:在Windows XP中设置Internet连接共享
  16. 重装mysql_重装MySQL步骤详解
  17. G002-186-18
  18. DEK印刷机Horizon触摸屏维修03iX主机显示屏维修概述
  19. 使用命令行组成Bat脚本,修改windwos系统的远程桌面端口号,并启动远程桌面
  20. MODBUS-寄存器与功能码学习

热门文章

  1. 【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?
  2. 往IOC 容器中添加组件的方式
  3. Spring框架功能整体介绍
  4. 品牌管理-统一异常处理
  5. 使用RSA算法解析令牌
  6. MyBatisEhcache二级缓存的开启
  7. SpringBoot高级-任务-邮件任务
  8. 代码chaid_[转载]经典决策树之SAS实现--CHAID
  9. permission denied和linux赋值权限chmod命令
  10. 【报错笔记】使用MultipartFile 出现异常:java.lang.ClassNotFoundException: org.apache.commons.fileupload...