Integer sequence generation and related conditional tests.

# interator

Module for integer sequence generation and related conditional tests.

## Installation

Use the package manager pip to install interator.

```pip install interator
```

## Contents

### Fibonacci Sequence

Function Description
`fibonacci_stream(start=(0,1))` Yield the next Fibonacci number starting with F(0)
`negafibonacci_stream(start=(0,1))` Yield the next Fibonacci number in the negative index starting with F(0)
`nth_fibonacci(n, start=(0, 1))` Given an index n, find F(n)
`lucas_stream(P = 2, Q = -1, start=(0, 1))` Yield the next number in the in the (P,-Q)-Lucas sequence starting with U0(P,Q)
`is_fibonacci(n, start=(0,1))` Determine if n is within the Fibonacci sequence
`is_lucas(n, P = 2, Q = -1, start=(0, 1))` Determine if n is within the (P,-Q)-Lucas sequence

#### Generalizations

By default, `fibonacci_stream`, `negafibonacci_stream`, `nth_fibonacci`, and `is_fibonacci` work with the Fibonacci numbers, and `lucas_stream` and `is_lucas` work with the Pell numbers. However, by changing `start`, any generalization of these sequences can be generated. Here are some common examples:

```import interator

stop = 10
numbers = {'Lucas' : (2, 1),
'Tribonacci' : (0, 0, 1),
'Tetranacci' : (0, 0, 0, 1)}

for name, start in numbers.items():
print('%s numbers:' % name)
for i, n in enumerate(interator.fibonacci_stream(start=start)):
print(n, end = ' ')
if i == stop:
print('\n')
break
```

Please note the Lucas numbers should not be confused with the Lucas sequence. The Lucas numbers are a specific example of the Lucas sequence.

### Prime Numbers

Functions Description
`prime_stream()` Yield the next prime number starting with 2
`composite_stream()` Yield the next composite number starting with 1
`is_prime()` Test the primality of n by checking potential prime factors
`miller_rabin(n, k = 8)` Perform the Miller-Rabin Primality Test on n
`is_composite(n)` Test if n is a composite number by checking potential prime factors

### Polygonal Numbers

Functions Description
`polygonal_stream(s)` Yield the next s-gonal number starting with 1
`is_polygonal(n, s)` Test if n is an s-gonal number

## Project details

This version 0.3 0.2 0.1