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 Program to Implement Johnson’s Algorithm
Converting Between Byte Arrays and Hexadecimal Strings in Java
Java Program to Implement Depth-limited Search
Giới thiệu SOAP UI và thực hiện test Web Service
Serverless Functions with Spring Cloud Function
Java Program to Implement Branch and Bound Method to Perform a Combinatorial Search
Posting with HttpClient
Sử dụng CyclicBarrier trong Java
Java Program to Perform Insertion in a BST
Java program to Implement Tree Set
Comparing Long Values in Java
A Custom Media Type for a Spring REST API
The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5
Comparing Two HashMaps in Java
HTTP Authentification and CGI/Servlet
Versioning a REST API
Introduction to Netflix Archaius with Spring Cloud
Java Program to Create a Balanced Binary Tree of the Incoming Data
Java CyclicBarrier vs CountDownLatch
Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java
Guide to Guava Table
Java Program to Implement Caesar Cypher
Java Program to Describe the Representation of Graph using Adjacency Matrix
Spring REST API + OAuth2 + Angular
JWT – Token-based Authentication trong Jersey 2.x
Adding Shutdown Hooks for JVM Applications
Tính kế thừa (Inheritance) trong java
ClassNotFoundException vs NoClassDefFoundError
Java Program to Construct K-D Tree for 2 Dimensional Data
Java Program to Implement Sorted Array
Implementing a Binary Tree in Java
Request Method Not Supported (405) in Spring