Java Program to Implement Fermat Factorization Algorithm

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 DelayQueue API
Deploy a Spring Boot App to Azure
Spring Security Login Page with React
Java Program to Implement Binary Search Tree
Java Program to do a Depth First Search/Traversal on a graph non-recursively
Checking for Empty or Blank Strings in Java
Java Program to Check whether Graph is a Bipartite using DFS
Java Web Services – JAX-WS – SOAP
Working With Maps Using Streams
Java Program to Implement Circular Singly Linked List
Java Program to Check Multiplicability of Two Matrices
Returning Custom Status Codes from Spring Controllers
Creating a Generic Array in Java
Vòng lặp for, while, do-while trong Java
Java Program to Find Minimum Element in an Array using Linear Search
Java Program to Implement Min Heap
Java Program to Perform the Unique Factorization of a Given Number
Spring Boot - Cloud Configuration Server
Java Program to Implement the Hungarian Algorithm for Bipartite Matching
Kết hợp Java Reflection và Java Annotations
Java Program to Show the Duality Transformation of Line and Point
The DAO with JPA and Spring
Java Program to Represent Graph Using Incidence List
Hướng dẫn sử dụng lớp Console trong java
So sánh HashMap và Hashtable trong Java
Quick Guide to @RestClientTest in Spring Boot
Java equals() and hashCode() Contracts
Java Program to Implement Kosaraju Algorithm
Disable Spring Data Auto Configuration
Hướng dẫn Java Design Pattern – Abstract Factory
The HttpMediaTypeNotAcceptableException in Spring MVC
A Guide to @RepeatedTest in Junit 5