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:
Server-Sent Events in Spring
XML Serialization and Deserialization with Jackson
JWT – Token-based Authentication trong Jersey 2.x
Giới thiệu Json Web Token (JWT)
Java Program to Generate Randomized Sequence of Given Range of Numbers
4 tính chất của lập trình hướng đối tượng trong Java
Limiting Query Results with JPA and Spring Data JPA
Working with Tree Model Nodes in Jackson
Hướng dẫn Java Design Pattern – MVC
Jackson – Decide What Fields Get Serialized/Deserialized
Java Program to Implement Quick sort
Guide to Dynamic Tests in Junit 5
List Interface trong Java
Java Program to Check if it is a Sparse Matrix
Create Java Applet to Simulate Any Sorting Technique
Mệnh đề Switch-case trong java
Stack Memory and Heap Space in Java
Spring MVC Tutorial
Java Program to Perform Postorder Non-Recursive Traversal of a Given Binary Tree
How to Read a Large File Efficiently with Java
How to Return 404 with Spring WebFlux
A Guide to the ViewResolver in Spring MVC
Convert Character Array to String in Java
Java Program to Solve Travelling Salesman Problem for Unweighted Graph
Check if a String is a Palindrome in Java
Java Program to Solve Set Cover Problem assuming at max 2 Elements in a Subset
Java Program to Implement Selection Sort
Cơ chế Upcasting và Downcasting trong java
Java Program to Implement Binomial Heap
Spring REST API with Protocol Buffers
Mockito and JUnit 5 – Using ExtendWith
Java Program to Implement Brent Cycle Algorithm