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:
Spring Boot - Flyway Database
Java Program to Implement a Binary Search Tree using Linked Lists
Working with Kotlin and JPA
Java Program to Find kth Smallest Element by the Method of Partitioning the Array
Introduction to Spring Cloud CLI
Retrieve User Information in Spring Security
Introduction to Spring Cloud Rest Client with Netflix Ribbon
Beans and Dependency Injection
Java Program to Implement Extended Euclid Algorithm
Java – Random Long, Float, Integer and Double
Java Program to Implement Find all Cross Edges in a Graph
New Features in Java 13
Java – Get Random Item/Element From a List
Quick Guide to Spring Bean Scopes
Spring Boot - Web Socket
Cachable Static Assets with Spring MVC
Comparing Dates in Java
Guide to @ConfigurationProperties in Spring Boot
Loại bỏ các phần tử trùng trong một ArrayList như thế nào trong Java 8?
Luồng Daemon (Daemon Thread) trong Java
Simple Single Sign-On with Spring Security OAuth2
Java Program to Implement Counting Sort
Java Program to Implement Lloyd’s Algorithm
Spring Cloud AWS – S3
Guide to the ConcurrentSkipListMap
Java Program to Implement Heap’s Algorithm for Permutation of N Numbers
Hướng dẫn Java Design Pattern – Memento
A Guide to the ResourceBundle
Call Methods at Runtime Using Java Reflection
Introduction to the Java NIO Selector
Java Program to Find k Numbers Closest to Median of S, Where S is a Set of n Numbers
Java Stream Filter with Lambda Expression