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:
Java Program to Generate All Subsets of a Given Set in the Lexico Graphic Order
Java Program to Implement Uniform-Cost Search
Java Program to Implement CopyOnWriteArrayList API
Hướng dẫn Java Design Pattern – Builder
Create a Custom Auto-Configuration with Spring Boot
Java Program to add two large numbers using Linked List
Quick Guide on Loading Initial Data with Spring Boot
Spring WebFlux Filters
Lấy ngày giờ hiện tại trong Java
The Difference Between map() and flatMap()
Java Program to Implement Threaded Binary Tree
Java Program to Implement Randomized Binary Search Tree
Java Program to Find the Longest Path in a DAG
Bootstrap a Web Application with Spring 5
A Guide to Spring Boot Admin
Spring Boot - Web Socket
Converting Between an Array and a Set in Java
Java Program to Implement Park-Miller Random Number Generation Algorithm
Remove HTML tags from a file to extract only the TEXT
Java Program to Implement Leftist Heap
Using Optional with Jackson
Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java
Java Program to Check whether Graph is a Bipartite using DFS
Daemon Threads in Java
Introduction to Spring Boot CLI
Spring Security with Maven
Java Program to Implement Depth-limited Search
Introduction to Java 8 Streams
Overview of Spring Boot Dev Tools
Simultaneous Spring WebClient Calls
Java 8 and Infinite Streams
Lập trình đa luồng với CompletableFuture trong Java 8