Define the sequence $a_1, a_2, a_3, \dots$ as:
$a_1 = 1$
$a_{n+1} = 6a_n^2 + 10a_n + 3$ for $n \ge 1$.
Examples:
$a_3 = 2359$
$a_6 = 269221280981320216750489044576319$
$a_6 \bmod 1\,000\,000\,007 = 203064689$
$a_{100} \bmod 1\,000\,000\,007 = 456482974$
Define $B(x,y,n)$ as $\sum (a_n \bmod p)$ for every prime $p$ such that $x \le p \le x+y$.
Examples:
$B(10^9, 10^3, 10^3) = 23674718882$
$B(10^9, 10^3, 10^{15}) = 20731563854$
Find $B(10^9, 10^7, 10^{15})$.
To solve these problems, we need to implement the recurrence relation and calculate the terms of the sequence $a_n$. Then, we will compute the sum of the remainders obtained by dividing each term by prime numbers. Finally, we will calculate the sum $B(x, y, n)$ for a given range of primes.
Let’s start by implementing the recurrence relation to generate the sequence $a_n$:
“`python
def generate_sequence(n):
a = [1] # Start with initial term a_1 = 1
for i in range(1, n):
a.append(6*a[i-1]**2 + 10*a[i-1] + 3)
return a
“`
Next, we will implement a helper function to check if a number is prime:
“`python
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
```
Now, we can implement the function to calculate the sum of remainders $B(x, y, n)$:
```python
def compute_B(x, y, n):
primes = []
prime_sum = 0
while len(primes) <= n:
if is_prime(x):
primes.append(x)
prime_sum += x
x += 1
return prime_sum
```
We will need to modify this function to consider the range $y$. Currently, it only checks for the first $n$ primes starting from $x$. We need to find a better way of generating the prime numbers within the range $x$ to $x+y$.
One way to do this is by using the Sieve of Eratosthenes algorithm, which efficiently finds all primes up to a given limit. Let's modify our code to use this algorithm:
```python
def compute_B(x, y, n):
primes = []
prime_sum = 0
sieve = [False] * (y+1) # Initialize the sieve with False values
for p in range(2, y+1):
if sieve[p] == False:
if p >= x:
primes.append(p)
prime_sum += p
for i in range(p, y+1, p):
sieve[i] = True
while len(primes) <= n: if is_prime(y): primes.append(y) prime_sum += y y += 1 return prime_sum ``` Now, let's calculate $B(10^9, 10^7, 10^{15})$ using this function: ```python result = compute_B(10**9, 10**7, 10**15) print(result) ``` The code should return the desired result. Remember to run the `generate_sequence(n)` function first to obtain the terms of sequence $a_n$ if needed.
More Answers:
Common Factors Between Two SequencesJumping Frog
Double Pandigital Number Divisible by $11$