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 Implement Graham Scan Algorithm to Find the Convex Hull
Batch Processing with Spring Cloud Data Flow
Java Program to Find Number of Spanning Trees in a Complete Bipartite Graph
Java Program to Implement Aho-Corasick Algorithm for String Matching
Dockerizing a Spring Boot Application
Java Program to implement Priority Queue
Limiting Query Results with JPA and Spring Data JPA
Reactive WebSockets with Spring 5
Java Program to Implement Hash Tables Chaining with Binary Trees
Guide to @JsonFormat in Jackson
Spring REST API + OAuth2 + Angular
Java 8 Predicate Chain
A Guide to the Java LinkedList
Java Program to Perform Complex Number Multiplication
Java Program to Implement Control Table
Java Program to Implement Leftist Heap
Spring Cloud AWS – S3
Tìm hiểu cơ chế Lazy Evaluation của Stream trong Java 8
Spring @RequestParam Annotation
Java Program to Find the Peak Element of an Array O(n) time (Naive Method)
Java Program to Implement Direct Addressing Tables
Object Type Casting in Java
Hướng dẫn Java Design Pattern – Singleton
Introduction to Using Thymeleaf in Spring
Tránh lỗi NullPointerException trong Java như thế nào?
A Guide To UDP In Java
Biến trong java
Introduction to Spring Cloud OpenFeign
Java Program to Implement Skip List
Java Program to Implement Ternary Search Algorithm
Java Program to Compute Discrete Fourier Transform Using Naive Approach
Converting Iterator to List