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:
Template Engines for Spring
Java Program to Implement CopyOnWriteArrayList API
Java Program to Check Cycle in a Graph using Graph traversal
JUnit 5 @Test Annotation
Java Program to Implement Cubic convergence 1/pi Algorithm
Java Program to Implement Hash Trie
A Guide to the Java LinkedList
Using a List of Values in a JdbcTemplate IN Clause
Java Program to Implement Circular Doubly Linked List
LinkedHashSet trong java
Adding a Newline Character to a String in Java
Java Program to Implement Hash Tables Chaining with Doubly Linked Lists
Java IO vs NIO
Autoboxing và Unboxing trong Java
Java Program to Implement Double Order Traversal of a Binary Tree
Logout in an OAuth Secured Application
Spring Security OAuth2 – Simple Token Revocation
Enum trong java
Java Program to Implement Sparse Array
Java Program to Find the Longest Path in a DAG
Java Program to Implement HashTable API
Spring Security Custom AuthenticationFailureHandler
Guide to @ConfigurationProperties in Spring Boot
Jackson – Bidirectional Relationships
How to Read a Large File Efficiently with Java
Java Program to Implement Branch and Bound Method to Perform a Combinatorial Search
Hashtable trong java
Java Program to Find SSSP (Single Source Shortest Path) in DAG (Directed Acyclic Graphs)
Immutable Map Implementations in Java
A Guide to Iterator in Java
Sorting in Java
Java – Reader to Byte Array