Module
Data.ModularArithmetic.Primality
- Package
- purescript-modular-arithmetic
- Repository
- hdgarrood/purescript-modular-arithmetic
#primeFactors Source
primeFactors :: Int -> List Int
Find prime factors by trial division; first attempting to divide by 2 and then by every odd number after that. This is the most basic prime factorisation algorithm possible but it is more than enough for this case (specifically, when the input is guaranteed to be no more than 2^31).
Prime factors are returned in increasing order. For example:
> primeFactors 12
(2 : 2 : 3 : Nil)
Passing in any number less than 2 will return an empty list.
> primeFactors (-12)
Nil
For all positive integers, the following properties are satisfied:
> product (primeFactors n) == n
> all isPrime (primeFactors n)
#Prime Source
class (Pos m) <= Prime m
This class specifies that a type-level integer is prime; that is, it has exactly 2 divisors: itself, and 1.
All primes up to 100 have instances. For larger primes, you will need to
use the reifyPrime
function.
Instances
Prime D2
Prime D3
Prime D5
Prime D7
Prime (NumCons D1 D1)
Prime (NumCons D1 D3)
Prime (NumCons D1 D7)
Prime (NumCons D1 D9)
Prime (NumCons D2 D3)
Prime (NumCons D2 D9)
Prime (NumCons D3 D1)
Prime (NumCons D3 D7)
Prime (NumCons D4 D1)
Prime (NumCons D4 D3)
Prime (NumCons D4 D7)
Prime (NumCons D5 D3)
Prime (NumCons D5 D9)
Prime (NumCons D6 D1)
Prime (NumCons D6 D7)
Prime (NumCons D7 D1)
Prime (NumCons D7 D3)
Prime (NumCons D7 D9)
Prime (NumCons D8 D3)
Prime (NumCons D8 D9)
Prime (NumCons D9 D7)