This is a Java Program to Implement Karatsuba Multiplication Algorithm. The Karatsuba algorithm is a fast multiplication algorithm. It was discovered by Anatolii Alexeevitch Karatsuba in 1960 and published in 1962. The Karatsuba algorithm was the first multiplication algorithm asymptotically faster than the quadratic “grade school” algorithm. It reduces the multiplication of two n-digit numbers to at most 3 n log 2 3 approx 3 n 1.585 single-digit multiplications in general.
Here is the source code of the Java Program to Implement Karatsuba Multiplication Algorithm. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/** * Java Program to Implement Karatsuba Multiplication Algorithm **/ import java.util.Scanner; /** Class Karatsuba **/ public class Karatsuba { /** Function to multiply two numbers **/ public long multiply(long x, long y) { int size1 = getSize(x); int size2 = getSize(y); /** Maximum of lengths of number **/ int N = Math.max(size1, size2); /** for small values directly multiply **/ if (N < 10) return x * y; /** max length divided, rounded up **/ N = (N / 2) + (N % 2); /** multiplier **/ long m = (long)Math.pow(10, N); /** compute sub expressions **/ long b = x / m; long a = x - (b * m); long d = y / m; long c = y - (d * N); /** compute sub expressions **/ long z0 = multiply(a, c); long z1 = multiply(a + b, c + d); long z2 = multiply(b, d); return z0 + ((z1 - z0 - z2) * m) + (z2 * (long)(Math.pow(10, 2 * N))); } /** Function to calculate length or number of digits in a number **/ public int getSize(long num) { int ctr = 0; while (num != 0) { ctr++; num /= 10; } return ctr; } /** Main function **/ public static void main (String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Karatsuba Multiplication Algorithm Test\n"); /** Make an object of Karatsuba class **/ Karatsuba kts = new Karatsuba(); /** Accept two integers **/ System.out.println("Enter two integer numbers\n"); long n1 = scan.nextLong(); long n2 = scan.nextLong(); /** Call function multiply of class Karatsuba **/ long product = kts.multiply(n1, n2); System.out.println("\nProduct : "+ product); } }
Output:
Karatsuba Multiplication Algorithm Test Enter two integer numbers 24061994 28563 Product : 687282734622
Related posts:
Java Program to Find Median of Elements where Elements are Stored in 2 Different Arrays
Getting the Size of an Iterable in Java
How to Round a Number to N Decimal Places in Java
Java Program to Implement Network Flow Problem
Hướng dẫn Java Design Pattern – Command
Java Program to Implement Randomized Binary Search Tree
String Joiner trong Java 8
Java Program to Implement Graham Scan Algorithm to Find the Convex Hull
Lập trình đa luồng với Callable và Future trong Java
Posting with HttpClient
Java Program to Implement Weight Balanced Tree
Java Program to find the peak element of an array using Binary Search approach
Java Program to Generate Randomized Sequence of Given Range of Numbers
A Guide to JUnit 5
Xây dựng ứng dụng Client-Server với Socket trong Java
Vector trong Java
Spring Data Reactive Repositories with MongoDB
Java Program to Implement Hash Tables with Quadratic Probing
Query Entities by Dates and Times with Spring Data JPA
ClassNotFoundException vs NoClassDefFoundError
Java Program to Implement Selection Sort
Java Optional as Return Type
Từ khóa throw và throws trong Java
A Guide to ConcurrentMap
Base64 encoding và decoding trong Java 8
Java Program to Implement Floyd Cycle Algorithm
Java Program to Perform Insertion in a 2 Dimension K-D Tree
Guide To CompletableFuture
How to Read a File in Java
Quick Guide to @RestClientTest in Spring Boot
Java Program to Implement Bubble Sort
Checked and Unchecked Exceptions in Java