Python library for primes
Project description
Installation
To install the package use pip:
pip install nprime
Introduction
Some algorithm on prime numbers.
Algorithm developed :
Eratosthenes sieve based
Fermat’s test (based on Fermat’s theorem)
Prime generating functions
Miller Rabin predictive algorithm
Specifications
Language: Python 3.5.2
Package:
Basic python packages were preferred
Matplotlib v2.0 - graph and math
Continuous integration
Travis will be used to run the tests automatically.
Code Quality
Ensured with PEP-8 (for the language format) and Pylint (for the code quality). PyLint is now only run by an other review tool integrated to this repo (codacity, erbert, …)
Math
Here are a bit of information to help understand some of the algorithms
Congruence
“≡“ means congruent, a ≡ b (mod m) implies that m / (a-b), ∃ k ∈ Z that verifies a = kn + b
which implies:
a ≡ 0 (mod n) <-> a = kn <-> "a" is divisible by "n"
Fermat’s Theorem
if n is prime then ∀ a ∈[1, ..., n-1]
a^(n-1) ≡ 1 (mod n) ⇔ a^(n-1) = kn + 1
Miller rabin
Take a random a ∈ {1,...,n−1} and n > 2, Find d and s such as with n - 1 = 2^s * d (with d odd) if (a^d)^2^r ≡ 1 mod n for all r in 0 to s-1 Then n is prime.
The test output is false of 1/4 of the “a values” possible in n, so the test is repeated t times.
Strong Pseudoprime
A strong pseudoprime to a base a is an odd composite number n with n-1 = d·2^s (for d odd) for which either a^d = 1(mod n) or a^(d·2^r) = -1(mod n) for some r = 0, 1, ..., s-1
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file nprime-0.0.9.tar.gz
.
File metadata
- Download URL: nprime-0.0.9.tar.gz
- Upload date:
- Size: 25.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 53c8e6391185b01d7720f8c38f9c9059f5f75b116672fd4d249ad72cc3703879 |
|
MD5 | 99b02cf9ab0d349df85fca056de45c96 |
|
BLAKE2b-256 | f802980b82d73e65c454c5acdd01323baafc49e2d1975048486777e4b510686f |