This is a Java Program to Implement Solovay Strassen Primality Test Algorithm. Solovay Strassen 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 Solovay Strassen 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 SolovayStrassen Primality Test Algorithm
**/
import java.util.Scanner;
import java.util.Random;
/** Class SolovayStrassen **/
public class SolovayStrassen
{
/** Function to calculate jacobi (a/b) **/
public long Jacobi(long a, long b)
{
if (b <= 0 || b % 2 == 0)
return 0;
long j = 1L;
if (a < 0)
{
a = -a;
if (b % 4 == 3)
j = -j;
}
while (a != 0)
{
while (a % 2 == 0)
{
a /= 2;
if (b % 8 == 3 || b % 8 == 5)
j = -j;
}
long temp = a;
a = b;
b = temp;
if (a % 4 == 3 && b % 4 == 3)
j = -j;
a %= b;
}
if (b == 1)
return j;
return 0;
}
/** 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;
Random rand = new Random();
for (int i = 0; i < iteration; i++)
{
long r = Math.abs(rand.nextLong());
long a = r % (n - 1) + 1;
long jacobian = (n + Jacobi(a, n)) % n;
long mod = modPow(a, (n - 1)/2, n);
if(jacobian == 0 || mod != jacobian)
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;
}
/** Main function **/
public static void main (String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("SolovayStrassen Primality Algorithm Test\n");
/** Make an object of SolovayStrassen class **/
SolovayStrassen ss = new SolovayStrassen();
/** 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 = ss.isPrime(num, k);
if (prime)
System.out.println("\n"+ num +" is prime");
else
System.out.println("\n"+ num +" is composite");
}
}
Output:
SolovayStrassen Primality Algorithm Test Enter number 9997777 Enter number of iterations 1 9997777 is prime
Related posts:
Disable Spring Data Auto Configuration
Hướng dẫn Java Design Pattern – DAO
Java Program to Implement ArrayList API
Functional Interfaces in Java 8
The Order of Tests in JUnit
A Guide to the finalize Method in Java
Send email with authentication
Java Program to Find the Connected Components of an UnDirected Graph
Tạo chương trình Java đầu tiên sử dụng Eclipse
Add Multiple Items to an Java ArrayList
Guide to Escaping Characters in Java RegExps
A Guide to Spring Boot Admin
Lập trình đa luồng với CompletableFuture trong Java 8
Java Program to Generate a Random UnDirected Graph for a Given Number of Edges
Java Program to Implement Levenshtein Distance Computing Algorithm
Java Program to Perform the Shaker Sort
Guide To CompletableFuture
Các chương trình minh họa sử dụng Cấu trúc điều khiển trong Java
Build a REST API with Spring and Java Config
A Guide to Concurrent Queues in Java
Hướng dẫn sử dụng String Format trong Java
Java Program to Perform Right Rotation on a Binary Search Tree
Java Program to Implement Sorting of Less than 100 Numbers in O(n) Complexity
Number Formatting in Java
Removing all Nulls from a List in Java
The Registration API becomes RESTful
Java Program to Emulate N Dice Roller
Java Program to Implement Booth Algorithm
Java Program to Implement Hash Trie
Using the Map.Entry Java Class
Hướng dẫn tạo và sử dụng ThreadPool trong Java
Java Program to Generate All Possible Subsets with Exactly k Elements in Each Subset