diffsquare
From the Author
Created by Abhrankan Chakrabarti, this project implements an efficient version of Fermatโs Difference of Squares method for factoring large integers. Written in Rust, it leverages the malachite crate for high-performance arbitrary-precision arithmetic.
Recent Update โ v0.6.0
๐ New in v0.6.0: optional file output support
- New
--outputflag lets you write factorization results to a file. - Results are appended if the file already exists.
- Useful for logging or batch processing outputs.
Key Features
diffsquare is a fast and lightweight CLI utility for factoring large integers using Fermatโs Difference of Squares method.
- Efficient Fermat's Difference of Squares factorization.
- Parallelized using
rayonfor faster factorization on multi-core systems (since v0.5.0). - Optional file output with
--outputflag to save results (since v0.6.0). - Support for decimal, hexadecimal, and scientific notation input.
- Command-line interface with interactive fallback.
- Quiet mode (
-q) disables interactive prompts and hides intermediate output โ useful for piping or scripting. - JSON output mode (
--json) for scripting and automation. --time-onlyflag for displaying only the execution time (useful for benchmarking).- Batch factorization using
--stdinto read multiple newline-separated numbers from standard input (e.g., via piping or redirection). - Optional control over iteration starting point and precision.
- Scientific notation used in verbose mode for large integer readability.
- Execution time displayed after successful factorization.
GitHub Repository:
diffsquare
Installation
Install via Cargo:
Ensure $HOME/.cargo/bin is in your PATH:
Build Instructions
To build from source manually:
๐ง Usage Examples
Run diffsquare interactively or use flags for automation:
# ๐น Fully interactive: prompts for modulus, iteration, and precision
# ๐น Provide a decimal modulus
# ๐น Provide a hexadecimal modulus
# ๐น Specify starting iteration (modulus still required)
# ๐น Use custom precision for verbose scientific output
# ๐น Combine all options and suppress output (precision not required in quiet mode)
# ๐น JSON output for scripting and automation
# ๐น Show only execution time (no output of factors)
# ๐น โป๏ธ Batch factorization from standard input (stdin)
|
# ๐น Batch factorization with threads and JSON output
|
# ๐น Save output to file (new in v0.6.0)
|
Command-Line Flags
| Short | Long | Description |
|---|---|---|
-n |
--mod |
Number to factor (supports 0x for hex or scientific notation) |
-i |
--iter |
Starting iteration value |
-p |
--prec |
Precision for verbose scientific output |
-q |
--quiet |
Suppress prompts and intermediate output |
--json |
Print result as JSON (suppresses all other output) | |
--time-only |
Display only the execution time (useful for benchmarking) | |
--stdin |
Read newline-separated numbers from standard input | |
--threads |
Number of threads for parallel factorization (default: 1) | |
--output |
Write results to specified file (appends if exists) | |
-h |
--help |
Show usage help |
-v |
--version |
Show version |
Tags
Tags
#RustLang #NumberTheory #OpenSource #BigInteger #Cryptography #Fermat #AbhrankanChakrabarti #Malachite