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:
Adding Shutdown Hooks for JVM Applications
@DynamicUpdate with Spring Data JPA
Spring Boot - Unit Test Cases
Java Program to implement Associate Array
Spring Autowiring of Generic Types
Java Program to Find Maximum Element in an Array using Binary Search
Hướng dẫn Java Design Pattern – Adapter
Giới thiệu Google Guice – Binding
Java Program to Implement Circular Singly Linked List
Java Program to Implement Suffix Array
Java Program to Apply DFS to Perform the Topological Sorting of a Directed Acyclic Graph
How to Break from Java Stream forEach
Java Program to Implement Bit Array
Spring WebClient and OAuth2 Support
Chương trình Java đầu tiên
Java Program to Implement the Monoalphabetic Cypher
Java Program to Construct a Random Graph by the Method of Random Edge Selection
Java Program to Implement Stack API
Merging Streams in Java
Java Program to Implement CopyOnWriteArrayList API
Base64 encoding và decoding trong Java 8
Hướng dẫn Java Design Pattern – Dependency Injection
Join and Split Arrays and Collections in Java
Custom Error Pages with Spring MVC
Remove All Occurrences of a Specific Value from a List
Ép kiểu trong Java (Type casting)
Java Program to Find Nearest Neighbor Using Linear Search
Introduction to Spring Boot CLI
Java Program to Implement the Vigenere Cypher
Spring Boot - File Handling
Java InputStream to Byte Array and ByteBuffer
Java Byte Array to InputStream