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:
Guide to Guava Table
Call Methods at Runtime Using Java Reflection
Java Program to Implement Sorted Array
Hướng dẫn Java Design Pattern – Intercepting Filter
Java Program to Implement Bubble Sort
Spring Security Basic Authentication
Spring Security OAuth2 – Simple Token Revocation
Period and Duration in Java
Java Program to Implement the Edmond’s Algorithm for Maximum Cardinality Matching
Exception Handling in Java
Spring Cloud AWS – RDS
Prim's Algorithm
Java Program to Implement Binomial Tree
Spring Security 5 – OAuth2 Login
Java Program to Implement Self organizing List
Spring Data Java 8 Support
Java Program to Perform Deletion in a BST
Get and Post Lists of Objects with RestTemplate
Java Program to Implement Gaussian Elimination Algorithm
Java Program to Implement Sieve Of Atkin
Java Stream Filter with Lambda Expression
Java Program to Implement LinkedTransferQueue API
Java Program to Generate All Possible Combinations Out of a, b, c, d, e
Java – Write an InputStream to a File
Guide to ThreadLocalRandom in Java
Configure a RestTemplate with RestTemplateBuilder
Java Program to Implement Graham Scan Algorithm to Find the Convex Hull
Java Program to Implement Meldable Heap
Java Program to Implement PriorityBlockingQueue API
Java Program to Check Cycle in a Graph using Graph traversal
Guide to @JsonFormat in Jackson
Difference Between Wait and Sleep in Java