# Approximating Brun's Constant

Brun's Constant is a number where the reciprocals of odd twin primes are added together.

As to date, there is no proof for the Twin Prime Conjecture and it remains open.

So, Brun's Constant may be represented as an infinite sequence.

Recall that a twin prime is a prime number that differs by 2 from another prime.

An example of a twin prime would be 17 and 19.

### Wilson's Theorem

For all integers k > 1, we have that:

where *a ≡ b (mod d)* means that *a - b* is evenly divisible by *d.*

That is to say, *a* and *b* have the same residue when divided by *d*.

### Double Factorial

The *double factorial, n!!* is the product of the natural numbers less than or equal to n that have the same parity as *n.*

It can be proved that there exists a generalization of Wilson's Theorem for the double factorial case.

Theorem:

Raise both sides of the congruences to ther power of 4 to obtain:

For all odd primes *p.*

Perform the same operation of raising the power by 4 on Wilson's Theorem.

Since:

Therefore:

for all primes *p.*

Now, let *k* be an odd, positive, composite integer. By definition, there exist integers **a***, b > 1* such that *k = ab*.

Since *k* is odd, so are *a* and *b*. Therefore both exist in the sequence *1, 3, …, k - 2* and

For all odd integers, *k > 1*

Let the function **f** be defined with a single argument.

Let *k, m,* and *j* be initialized respectively as *3, 1*, and *0*.

```
(k - 2)!!)4 = 1!!4 = 1 = m.
m = ((k - 2)!!)4
```

*j* is a *float* and is equal to:

```
(k - 4)!!)4 % (k - 2) / (k - 2).
```

While *k < n*, the right argument of `and`

will be evaulated.

Since

```
j = ((k - 4)!!)4 % (k - 2) / (k - 2)
j = 1/(k - 2) if k - 2 is prime and j = 0 if not
```

Since *m % k = ((k - 2)!!)4* equals *1* if *k* is *prime* and *0* if not,

`-m % k = k - 1`

If

kisprimeand-m % k = 0if not.

Therefore,

```
-m%k*j*2/k
```

Evaluates to:

`: 2(k - 1)/(k(k - 2)) = ((k - 2) + k)/(k(k - 2)) = 1/k + 1/(k - 2)`

If the pair

(k - 2, k)consists of twin primes and to0if not.

Now, add the result to the return value of the recursive call:

`f(n,k+2,m*k**4,m%k/k)`

kincrements by 2, therefore only taking odd values.

mis multiplied by k⁴, since`mk⁴ = ((k - 2)!!)⁴k⁴ = (k!!)⁴`

Pass the current value of

`m % k / k`

which equals

1/kif the previouskis a prime and0if not – as parameterjto the function call.

Once *k* is equal to or greater than *n*, *f* will return *False* and stop

**f(n)**

`1/k + 1/(k - 2)`

such that

(k - 2, k)is a twin prime pair andk < n, as desired.

### Python3

```
f=lambda n,k=3,m=1,j=0:k<n and-m%k*j*2/k+f(n,k+2,m*k**4,m%k/k)
```