arithmoi-0.9.0.0: Efficient basic number-theoretic functions.

Copyright(c) 2018 Alexandre Rodrigues Baldé
LicenseMIT
MaintainerAlexandre Rodrigues Baldé <alexandrer_b@outlook.com>
Safe HaskellNone
LanguageHaskell2010

Math.NumberTheory.ArithmeticFunctions.NFreedom

Description

N-free number generation.

Synopsis

Documentation

nFrees Source #

Arguments

:: Integral a 
=> Word

Power n to be used to generate n-free numbers.

-> [a]

Generated infinite list of n-free numbers.

For a given nonnegative integer power n, generate all n-free numbers in ascending order, starting at 1.

When n is 0 or 1, the resulting list is [1].

nFreesBlock Source #

Arguments

:: Integral a 
=> Word

Power n to be used to generate n-free numbers.

-> a

Starting number in the block.

-> Word

Maximum length of the block to be generated.

-> [a]

Generated list of n-free numbers.

Generate n-free numbers in a block starting at a certain value. The length of the list is determined by the value passed in as the third argument. It will be lesser than or equal to this value.

This function should not be used with a negative lower bound. If it is, the result is undefined.

The block length cannot exceed maxBound :: Int, this precondition is not checked.

As with nFrees, passing n = 0, 1 results in an empty list.

sieveBlockNFree Source #

Arguments

:: Integral a 
=> Word

Power whose n-freedom will be checked.

-> a

Lower index of the block.

-> Word

Length of the block.

-> Vector Bool

Vector of flags, where True at index i means the i-th element of the block is n-free.

Evaluate the isNFree function over a block. Value at 0, if zero falls into block, is undefined.

This function should **not** be used with a negative lower bound. If it is, the result is undefined. Furthermore, do not:

  • use a block length greater than maxBound :: Int.
  • use a power that is either of 0, 1.

None of these preconditions are checked, and if any occurs, the result is undefined, if the function terminates.

>>> sieveBlockNFree 2 1 10
[True,True,True,False,True,True,True,False,False,True]