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:
Guide to CountDownLatch in Java
Java Program to Implement Coppersmith Freivald’s Algorithm
A Guide to JUnit 5 Extensions
Cachable Static Assets with Spring MVC
Using a Spring Cloud App Starter
JUnit 5 @Test Annotation
Netflix Archaius with Various Database Configurations
Java Program to Compute Determinant of a Matrix
Java Program to Perform Searching in a 2-Dimension K-D Tree
Introduction to the Java NIO Selector
Custom Thread Pools In Java 8 Parallel Streams
Find the Registered Spring Security Filters
Java TreeMap vs HashMap
Spring Cloud Series – The Gateway Pattern
Java Program to Permute All Letters of an Input String
Vòng lặp for, while, do-while trong Java
Quick Guide to the Java StringTokenizer
Java Program to Check Whether a Directed Graph Contains a Eulerian Cycle
JUnit 5 for Kotlin Developers
Tránh lỗi NullPointerException trong Java như thế nào?
Java Program to Implement Flood Fill Algorithm
The Spring @Controller and @RestController Annotations
Spring Boot Tutorial – Bootstrap a Simple Application
Java Program to Implement Extended Euclid Algorithm
Java Program to Compute Discrete Fourier Transform Using the Fast Fourier Transform Approach
Working with Tree Model Nodes in Jackson
Java Program to Implement Self Balancing Binary Search Tree
So sánh HashMap và HashSet trong Java
Jackson – Decide What Fields Get Serialized/Deserialized
Quick Intro to Spring Cloud Configuration
Java Program to Find Transpose of a Graph Matrix
The DAO with Spring and Hibernate