This is a Java Program to Implement Stein GCD Algorithm. The binary GCD algorithm, also known as Stein’s algorithm, is an algorithm that computes the greatest common divisor of two nonnegative integers. Stein’s algorithm uses simpler arithmetic operations than the conventional Euclidean algorithm. It replaces division with arithmetic shifts, comparisons and subtraction.
Here is the source code of the Java Program to Implement Stein GCD Algorithm. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/**
** Java Program to Implement Stein GCD Algorithm
**/
import java.util.Scanner;
/** Class SteinGcd **/
public class SteinGcd
{
/** Function to calculate gcd **/
public int gcd(int u, int v)
{
int shift;
if (u == 0)
return v;
if (v == 0)
return u;
for (shift = 0; ((u | v) & 1) == 0; ++shift)
{
u >>= 1;
v >>= 1;
}
while ((u & 1) == 0)
u >>= 1;
do
{
while ((v & 1) == 0)
v >>= 1;
if (u > v)
{
int t = v;
v = u;
u = t;
}
v = v - u;
} while (v != 0);
return u << shift;
}
/** Main function **/
public static void main (String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Stein GCD Algorithm Test\n");
/** Make an object of SteingGcd class **/
SteinGcd sg = new SteinGcd();
/** Accept two integers **/
System.out.println("Enter two integer numbers\n");
int n1 = scan.nextInt();
int n2 = scan.nextInt();
/** Call function gcd of class SteinGcd **/
int gcd = sg.gcd(n1, n2);
System.out.println("GCD of "+ n1 +" and "+ n2 +" = "+ gcd);
}
}
Output:
Stein GCD Algorithm Test Enter two integer numbers 32984 10013 GCD of 32984 and 10013 = 589
Related posts:
Hướng dẫn Java Design Pattern – Bridge
Hướng dẫn Java Design Pattern – Factory Method
Java Program to Implement Dijkstra’s Algorithm using Priority Queue
HashSet trong java
Convert Hex to ASCII in Java
Java Program to Construct an Expression Tree for an Infix Expression
The XOR Operator in Java
Java Program to Use rand and srand Functions
Compare Two JSON Objects with Jackson
Introduction to Apache Commons Text
Spring Boot - Apache Kafka
How to Return 404 with Spring WebFlux
Java Program to Find Nearest Neighbor for Dynamic Data Set
How To Serialize and Deserialize Enums with Jackson
Java Program to Generate Random Numbers Using Probability Distribution Function
Java Program to Generate a Random UnDirected Graph for a Given Number of Edges
Guide to the ConcurrentSkipListMap
Removing all Nulls from a List in Java
How to Read a Large File Efficiently with Java
Guide to java.util.concurrent.Locks
The DAO with JPA and Spring
Phân biệt JVM, JRE, JDK
How to Use if/else Logic in Java 8 Streams
HttpClient 4 Cookbook
Primitive Type Streams in Java 8
Intro to Inversion of Control and Dependency Injection with Spring
SOAP Web service: Upload và Download file sử dụng MTOM trong JAX-WS
Java Program to Use the Bellman-Ford Algorithm to Find the Shortest Path
Truyền giá trị và tham chiếu trong java
Java Program to Check Whether a Directed Graph Contains a Eulerian Cycle
Spring @RequestMapping New Shortcut Annotations
Java Program to Convert a Decimal Number to Binary Number using Stacks