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:
An Intro to Spring Cloud Security
Java Program to Implement Insertion Sort
Debugging Reactive Streams in Java
Java Program to Perform Right Rotation on a Binary Search Tree
Java Program to Find the Shortest Path from Source Vertex to All Other Vertices in Linear Time
Stack Memory and Heap Space in Java
Java Program to Represent Graph Using Adjacency Matrix
Removing Elements from Java Collections
Using the Map.Entry Java Class
Receive email by java client
Java Program to Find the Edge Connectivity of a Graph
Setting Up Swagger 2 with a Spring REST API
Checked and Unchecked Exceptions in Java
Java Program to Create a Balanced Binary Tree of the Incoming Data
Handle EML file with JavaMail
Different Ways to Capture Java Heap Dumps
Java Program to Find Inverse of a Matrix
Binary Numbers in Java
Migrating from JUnit 4 to JUnit 5
Java Program to Represent Graph Using Adjacency List
Reversing a Linked List in Java
A Guide to Apache Commons Collections CollectionUtils
Servlet 3 Async Support with Spring MVC and Spring Security
Java Program to Implement Segment Tree
Java Program to Implement Rolling Hash
Spring MVC Async vs Spring WebFlux
Quick Guide to Spring MVC with Velocity
Check if a String is a Palindrome in Java
Immutable Map Implementations in Java
Java Program to Implement CountMinSketch
Generating Random Numbers in a Range in Java
Static Content in Spring WebFlux