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:
Spring Boot - Service Components
Java Program to Implement Hash Trie
A Custom Data Binder in Spring MVC
Java Program to Perform the Shaker Sort
Java Program to Implement Fermat Primality Test Algorithm
The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5
Java Program to Search Number Using Divide and Conquer with the Aid of Fibonacci Numbers
Java Program to Perform Naive String Matching
Handling Errors in Spring WebFlux
Java Program to implement Bit Set
Spring Data – CrudRepository save() Method
Compare Two JSON Objects with Jackson
Java Program to Find the Longest Path in a DAG
Java Program to Implement Strassen Algorithm
Java – File to Reader
XML Serialization and Deserialization with Jackson
Tính đa hình (Polymorphism) trong Java
Getting Started with Forms in Spring MVC
Spring Boot with Multiple SQL Import Files
HashSet trong java
A Guide to JPA with Spring
Java Program to Implement DelayQueue API
Java Program to subtract two large numbers using Linked Lists
HttpClient 4 – Follow Redirects for POST
Java Program to Implement Fibonacci Heap
Guide to Spring Cloud Kubernetes
Tạo ứng dụng Java RESTful Client không sử dụng 3rd party libraries
DistinctBy in the Java Stream API
Giới thiệu java.io.tmpdir
Java Program to Implement Graham Scan Algorithm to Find the Convex Hull
Guava CharMatcher
Introduction to Spring Method Security