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:
Disable Spring Data Auto Configuration
Spring’s RequestBody and ResponseBody Annotations
Concatenating Strings In Java
Spring WebClient and OAuth2 Support
How to Count Duplicate Elements in Arraylist
Java Program to Implement RoleUnresolvedList API
Java Program to Implement Coppersmith Freivald’s Algorithm
Lập trình đa luồng trong Java (Java Multi-threading)
Java Program to Implement SimpeBindings API
A Guide to @RepeatedTest in Junit 5
Java Program to Implement Expression Tree
Retrieve User Information in Spring Security
Java Program to Implement Heap’s Algorithm for Permutation of N Numbers
Java Program to Implement Singly Linked List
Using a Mutex Object in Java
Introduction to Spring Security Expressions
Spring Boot - Admin Client
Spring Security Custom AuthenticationFailureHandler
Java Program to Find the GCD and LCM of two Numbers
HttpAsyncClient Tutorial
Java Program to Check Whether it is Weakly Connected or Strongly Connected for a Directed Graph
Intro to Inversion of Control and Dependency Injection with Spring
Java Program to Implement Skew Heap
Mệnh đề if-else trong java
Java Program to Compute Discrete Fourier Transform Using Naive Approach
ETags for REST with Spring
HttpClient Basic Authentication
Java Program to Implement Fibonacci Heap
Java Program to Implement Kosaraju Algorithm
Java Program to Implement Hamiltonian Cycle Algorithm
Java Program to Implement Wagner and Fisher Algorithm for online String Matching
Java Program to Implement Floyd Cycle Algorithm