This is a Java Program to Implement Fermat Factorization Algorithm. Fermat’s factorization method, named after Pierre de Fermat, is based on the representation of an odd integer as the difference of two squares: N = a2 – b2. That difference is algebraically factorable as (a + b)(a – b); if neither factor equals one, it is a proper factorization of N.
Here is the source code of the Java Program to Implement Fermat Factorization Algorithm. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/**
** Java Program to implement Fermat Factorization Algorithm
**/
import java.util.Scanner;
public class FermatFactorization
{
/** Fermat factor **/
public void FermatFactor(long N)
{
long a = (long) Math.ceil(Math.sqrt(N));
long b2 = a * a - N;
while (!isSquare(b2))
{
a++;
b2 = a * a - N;
}
long r1 = a - (long)Math.sqrt(b2);
long r2 = N / r1;
display(r1, r2);
}
/** function to display roots **/
public void display(long r1, long r2)
{
System.out.println("\nRoots = "+ r1 +" , "+ r2);
}
/** function to check if N is a perfect square or not **/
public boolean isSquare(long N)
{
long sqr = (long) Math.sqrt(N);
if (sqr * sqr == N || (sqr + 1) * (sqr + 1) == N)
return true;
return false;
}
/** main method **/
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Fermat Factorization Test\n");
System.out.println("Enter odd number");
long N = scan.nextLong();
FermatFactorization ff = new FermatFactorization();
ff.FermatFactor(N);
}
}
Output:
Fermat Factorization Test Enter odd number 5959 Roots = 59 , 101 Fermat Factorization Test Enter odd number 432633 Roots = 499 , 867
Related posts:
Java – Byte Array to Reader
Spring Boot - Thymeleaf
Đồng bộ hóa các luồng trong Java
Java Program to Check Whether Graph is DAG
Hướng dẫn sử dụng Java Annotation
Registration with Spring Security – Password Encoding
Java Program to Perform Right Rotation on a Binary Search Tree
Java Program to Solve the 0-1 Knapsack Problem
Java Program to Implement Euclid GCD Algorithm
Lập trình đa luồng với CompletableFuture trong Java 8
Java Program to Implement SynchronosQueue API
Hướng dẫn Java Design Pattern – Iterator
The Difference Between Collection.stream().forEach() and Collection.forEach()
Guide to @JsonFormat in Jackson
So sánh ArrayList và Vector trong Java
Spring REST API with Protocol Buffers
How to Delay Code Execution in Java
The Thread.join() Method in Java
Java Program to Compute Discrete Fourier Transform Using the Fast Fourier Transform Approach
Introduction to Spring Data MongoDB
Configure a Spring Boot Web Application
Java Program to find the maximum subarray sum using Binary Search approach
Java Program to Create a Balanced Binary Tree of the Incoming Data
Java Program to Implement Heap’s Algorithm for Permutation of N Numbers
Java Program to Generate All Possible Subsets with Exactly k Elements in Each Subset
Spring Boot - Tomcat Port Number
New Features in Java 14
Lớp TreeMap trong Java
Debug a HttpURLConnection problem
Java Program to Implement Meldable Heap
Java Program to Implement Quick Sort with Given Complexity Constraint
How to Find an Element in a List with Java