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:
Overview of the java.util.concurrent
Lập trình đa luồng với CompletableFuture trong Java 8
Introduction to Using Thymeleaf in Spring
Prevent Cross-Site Scripting (XSS) in a Spring Application
Spring Web Annotations
HandlerAdapters in Spring MVC
Java Program to Represent Graph Using 2D Arrays
Unsatisfied Dependency in Spring
Convert XML to JSON Using Jackson
Java Program to Implement Warshall Algorithm
JUnit 5 for Kotlin Developers
Java Program to Implement Binary Search Tree
Spring REST with a Zuul Proxy
Java Program to find the maximum subarray sum using Binary Search approach
New Features in Java 12
Notify User of Login From New Device or Location
Java Program to Implement Sieve Of Sundaram
Java Program to Emulate N Dice Roller
Spring Boot - Database Handling
Guide to the Volatile Keyword in Java
Java Program to Implement Merge Sort Algorithm on Linked List
Logout in an OAuth Secured Application
Limiting Query Results with JPA and Spring Data JPA
Converting String to Stream of chars
Set Interface trong Java
Guide to the Synchronized Keyword in Java
Java Program to Implement Self Balancing Binary Search Tree
Introduction to the Java NIO2 File API
Lớp Arrarys trong Java (Arrays Utility Class)
Java Program to Encode a Message Using Playfair Cipher
Java Program to Implement Flood Fill Algorithm
Guide to java.util.concurrent.Future