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:
Tiêu chuẩn coding trong Java (Coding Standards)
Check If Two Lists are Equal in Java
How to Define a Spring Boot Filter?
Java Program to Perform Preorder Non-Recursive Traversal of a Given Binary Tree
Test a REST API with Java
Java Program to do a Breadth First Search/Traversal on a graph non-recursively
Server-Sent Events in Spring
Java Program to implement Sparse Vector
Java Program to Create a Random Linear Extension for a DAG
Spring Cloud AWS – EC2
Java Program to Implement LinkedBlockingDeque API
Java Program to Implement Graph Coloring Algorithm
Java Program to Implement Ternary Tree
Introduction to Spring Cloud CLI
Logout in an OAuth Secured Application
Concurrent Test Execution in Spring 5
Java Program to Implement Find all Back Edges in a Graph
Java – Combine Multiple Collections
Java Program to Generate All Subsets of a Given Set in the Gray Code Order
OAuth2.0 and Dynamic Client Registration
Introduction to Netflix Archaius with Spring Cloud
Show Hibernate/JPA SQL Statements from Spring Boot
Java Stream Filter with Lambda Expression
Java Program to Construct an Expression Tree for an Infix Expression
Function trong Java 8
Java Program to Implement CopyOnWriteArraySet API
XML-Based Injection in Spring
4 tính chất của lập trình hướng đối tượng trong Java
Updating your Password
Java Program to Perform Matrix Multiplication
Mệnh đề if-else trong java
Unsatisfied Dependency in Spring