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:
Java Program to Test Using DFS Whether a Directed Graph is Strongly Connected or Not
Spring Boot - Scheduling
Java Program to Implement Counting Sort
Java 8 and Infinite Streams
Converting Between Byte Arrays and Hexadecimal Strings in Java
Java Program to Implement a Binary Search Tree using Linked Lists
Redirect to Different Pages after Login with Spring Security
Hướng dẫn Java Design Pattern – Transfer Object
Performance Difference Between save() and saveAll() in Spring Data
Wrapper Classes in Java
Check If a String Is Numeric in Java
Check If Two Lists are Equal in Java
Form Validation with AngularJS and Spring MVC
Build a REST API with Spring and Java Config
Feign – Tạo ứng dụng Java RESTful Client
Java Program to Implement Rope
Concrete Class in Java
Java Program for Douglas-Peucker Algorithm Implementation
Java Program to Implement Circular Singly Linked List
Lập trình đa luồng trong Java (Java Multi-threading)
Java Program to Implement Queue using Linked List
Hướng dẫn Java Design Pattern – Template Method
Jackson Date
Guide to BufferedReader
Spring MVC Async vs Spring WebFlux
Java Program to Use rand and srand Functions
TreeSet và sử dụng Comparable, Comparator trong java
Guide to Spring @Autowired
Java Program to Find Shortest Path Between All Vertices Using Floyd-Warshall’s Algorithm
Format ZonedDateTime to String
Java Program to Implement Wagner and Fisher Algorithm for online String Matching
Java Program to Implement Sorted Singly Linked List