This is a Java Program to Implement Pollard Rho Algorithm. Pollard Rho algorithm is a general purpose factorization algorithm. It is particularly effective at splitting composite numbers with small factors.
Here is the source code of the Java Program to Implement Pollard Rho Algorithm. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/** ** Java Program to implement Pollard Rho Algorithm **/ import java.util.Scanner; /** Class PollardRho **/ public class PollardRho { private static final long C = 1; /** function X * X + C, change value of C as required **/ private long f(long X) { return X * X + C; } /** get divisor **/ private long rho(long N) { long x1 = 2, x2 = 2, divisor; if (N % 2 == 0) return 2; do { x1 = f(x1) % N; x2 = f(f(x2)) % N; divisor = gcd(Math.abs(x1 - x2), N); } while (divisor == 1); /** return divisor **/ return divisor; } /** GCD of two numbers **/ public long gcd(long p, long q) { if (p % q == 0) return q; return gcd(q, p % q); } /** Check if num is prime **/ public boolean isPrime(long N) { for (int i = 2; i <= Math.sqrt(N); i++) if (N % i == 0) return false; return true; } /** get all factors **/ public void factor(long N) { if (N == 1) return; if (isPrime(N)) { System.out.println(N); return; } long divisor = rho(N); factor(divisor); factor(N / divisor); } /** Main function **/ public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Pollard Rho Algorithm\n"); System.out.println("Enter a number"); long N = scan.nextLong(); System.out.println("\nFactors are : "); PollardRho pr = new PollardRho(); pr.factor (N); } }
Output:
Pollard Rho Algorithm Enter a number 2406 Factors are : 2 3 401
Related posts:
Java Program to Check whether Graph is Biconnected
Xử lý ngoại lệ trong Java (Exception Handling)
Introduction to Spring Security Expressions
Comparing Long Values in Java
Tìm hiểu cơ chế Lazy Evaluation của Stream trong Java 8
A Guide to Queries in Spring Data MongoDB
Assert an Exception is Thrown in JUnit 4 and 5
Java Program to Implement Rope
Deque và ArrayDeque trong Java
Jackson – Unmarshall to Collection/Array
How to Return 404 with Spring WebFlux
Converting a List to String in Java
Spring JDBC
Java Program to Solve any Linear Equation in One Variable
Java – Reader to Byte Array
Hướng dẫn sử dụng Java String, StringBuffer và StringBuilder
Java Program to Find ith Largest Number from a Given List Using Order-Statistic Algorithm
Java Program to Implement Nth Root Algorithm
How to Store Duplicate Keys in a Map in Java?
Java – Try with Resources
Các kiểu dữ liệu trong java
Java Program to Implement Coppersmith Freivald’s Algorithm
Java Deep Learning Essentials - Yusuke Sugomori
Allow user:password in URL
Ways to Iterate Over a List in Java
Guide to CountDownLatch in Java
Java Program to Implement Threaded Binary Tree
Giới thiệu thư viện Apache Commons Chain
Spring Security 5 for Reactive Applications
Java Program to Implement Flood Fill Algorithm
Predicate trong Java 8
Java Program to Implement Gabow Algorithm