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:
Các kiểu dữ liệu trong java
Reactive Flow with MongoDB, Kotlin, and Spring WebFlux
LinkedHashSet trong java
@Order in Spring
Retrieve User Information in Spring Security
ETL with Spring Cloud Data Flow
Java Program to implement Bi Directional Map
Apache Commons Collections Bag
Java Program to Print the Kind of Rotation the AVL Tree is Undergoing
The Registration API becomes RESTful
Composition, Aggregation, and Association in Java
Java Program to Implement LinkedBlockingQueue API
Java Program to Implement TreeMap API
Supplier trong Java 8
Java 14 Record Keyword
Java Program to Implement Graham Scan Algorithm to Find the Convex Hull
Convert a Map to an Array, List or Set in Java
Java Program to Implement Merge Sort on n Numbers Without tail-recursion
Java – Byte Array to Reader
Spring Boot - Quick Start
Java Program to Implement Singly Linked List
Spring Boot - Cloud Configuration Server
Uploading MultipartFile with Spring RestTemplate
Spring Boot - Batch Service
JWT – Token-based Authentication trong Jersey 2.x
Hướng dẫn Java Design Pattern – Adapter
Java Program to Implement Sorted Doubly Linked List
Read an Outlook MSG file
Server-Sent Events in Spring
Simple Single Sign-On with Spring Security OAuth2
Java Program to Generate Random Numbers Using Middle Square Method
How to use the Spring FactoryBean?