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:
Returning Custom Status Codes from Spring Controllers
Java Program to Implement Bubble Sort
Java 8 and Infinite Streams
Java Program to Implement Vector API
Java Program to Implement Caesar Cypher
Java Program to Check whether Undirected Graph is Connected using DFS
Java Program to Create a Random Linear Extension for a DAG
Apache Commons Collections BidiMap
Java Program to Create the Prufer Code for a Tree
Creating a Custom Starter with Spring Boot
Lớp HashMap trong Java
Lớp Collectors trong Java 8
Spring Cloud – Securing Services
Spring Boot - Google Cloud Platform
LIKE Queries in Spring JPA Repositories
HashMap trong Java hoạt động như thế nào?
Spring Data JPA @Modifying Annotation
A Guide to JPA with Spring
MyBatis with Spring
Giới thiệu Aspect Oriented Programming (AOP)
Java Program to Implement Knapsack Algorithm
How to Round a Number to N Decimal Places in Java
Show Hibernate/JPA SQL Statements from Spring Boot
Spring Data JPA @Query
Java Program to Implement Rolling Hash
Iterating over Enum Values in Java
So sánh HashMap và HashSet trong Java
Java Program to Apply DFS to Perform the Topological Sorting of a Directed Acyclic Graph
Hướng dẫn Java Design Pattern – Decorator
Introduction to Spring Data JPA
Java – Get Random Item/Element From a List
Quick Guide on Loading Initial Data with Spring Boot