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:
Introduction to Spring Security Expressions
Spring WebFlux Filters
Java – Reader to String
Java Program to Implement Jarvis Algorithm
Working With Maps Using Streams
Java Program to Implement Min Hash
JUnit 5 @Test Annotation
Xử lý ngoại lệ đối với trường hợp ghi đè phương thức trong java
Spring Boot - Cloud Configuration Server
Lớp Properties trong java
Create a Custom Auto-Configuration with Spring Boot
Java Program to Implement Self organizing List
HTTP Authentification and CGI/Servlet
Spring Security Remember Me
Java Program to Use Boruvka’s Algorithm to Find the Minimum Spanning Tree
HttpClient 4 – Send Custom Cookie
XML Serialization and Deserialization with Jackson
Java Program to Use Above Below Primitive to Test Whether Two Lines Intersect
Hướng dẫn Java Design Pattern – Chain of Responsibility
Unsatisfied Dependency in Spring
Java Program to Implement Interpolation Search Algorithm
Java Program to Check Whether a Directed Graph Contains a Eulerian Cycle
Java Program to Find Median of Elements where Elements are Stored in 2 Different Arrays
Immutable ArrayList in Java
Getting Started with Custom Deserialization in Jackson
Java Program to Implement Selection Sort
Introduction to Spring Data MongoDB
More Jackson Annotations
Java Program to Perform integer Partition for a Specific Case
Integer Constant Pool trong Java
Java Program to Implement PriorityBlockingQueue API
Java Program to Find Strongly Connected Components in Graphs