This is a Java Program to Implement Miller Rabin Primality Test Algorithm. Miller Rabin Primality Test is an algorithm which is used to determine if a given number is prime or not.
Here is the source code of the Java Program to Implement Miller Rabin Primality Test Algorithm. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/** ** Java Program to Implement Miller Rabin Primality Test Algorithm **/ import java.util.Scanner; import java.util.Random; import java.math.BigInteger; /** Class MillerRabin **/ public class MillerRabin { /** Function to check if prime or not **/ public boolean isPrime(long n, int iteration) { /** base case **/ if (n == 0 || n == 1) return false; /** base case - 2 is prime **/ if (n == 2) return true; /** an even number other than 2 is composite **/ if (n % 2 == 0) return false; long s = n - 1; while (s % 2 == 0) s /= 2; Random rand = new Random(); for (int i = 0; i < iteration; i++) { long r = Math.abs(rand.nextLong()); long a = r % (n - 1) + 1, temp = s; long mod = modPow(a, temp, n); while (temp != n - 1 && mod != 1 && mod != n - 1) { mod = mulMod(mod, mod, n); temp *= 2; } if (mod != n - 1 && temp % 2 == 0) return false; } return true; } /** Function to calculate (a ^ b) % c **/ public long modPow(long a, long b, long c) { long res = 1; for (int i = 0; i < b; i++) { res *= a; res %= c; } return res % c; } /** Function to calculate (a * b) % c **/ public long mulMod(long a, long b, long mod) { return BigInteger.valueOf(a).multiply(BigInteger.valueOf(b)).mod(BigInteger.valueOf(mod)).longValue(); } /** Main function **/ public static void main (String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Miller Rabin Primality Algorithm Test\n"); /** Make an object of MillerRabin class **/ MillerRabin mr = new MillerRabin(); /** Accept number **/ System.out.println("Enter number\n"); long num = scan.nextLong(); /** Accept number of iterations **/ System.out.println("\nEnter number of iterations"); int k = scan.nextInt(); /** check if prime **/ boolean prime = mr.isPrime(num, k); if (prime) System.out.println("\n"+ num +" is prime"); else System.out.println("\n"+ num +" is composite"); } }
Output:
Miller Rabin Primality Algorithm Test Enter number 5510389 Enter number of iterations 2 5510389 is prime
Related posts:
How to Implement Caching using Adonis.js 5
Getting the Size of an Iterable in Java
Java Program to Solve the 0-1 Knapsack Problem
How to Read a Large File Efficiently with Java
LinkedList trong java
LIKE Queries in Spring JPA Repositories
Java Program to Solve the Fractional Knapsack Problem
Jackson – Change Name of Field
Java NIO2 Path API
Java Program to Implement Stack using Linked List
Control Structures in Java
Hướng dẫn Java Design Pattern – Chain of Responsibility
Java Program to Check Cycle in a Graph using Graph traversal
Java Program to find the maximum subarray sum O(n^2) time(naive method)
Java – Byte Array to Reader
Functional Interfaces in Java 8
Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java
Java Program to Implement Borwein Algorithm
Concrete Class in Java
Java 8 Streams peek() API
Java Program to Generate a Graph for a Given Fixed Degree Sequence
Sereja and Algorithm
OAuth 2.0 Resource Server With Spring Security 5
Converting String to Stream of chars
Array to String Conversions
Compare Two JSON Objects with Jackson
HttpClient Connection Management
Java Program to Implement Bellman-Ford Algorithm
Mockito and JUnit 5 – Using ExtendWith
JUnit 5 for Kotlin Developers
Introduction to Spring Cloud Rest Client with Netflix Ribbon
Java Program to Implement the Hungarian Algorithm for Bipartite Matching