All SolutionsAll Solutions
🧮
Primes
Week 8, 2026
Python: Solution with pre-generated list of primes | Alexevi | Python Solutions
def main() -> None:
maximum = 10000 # input of program
primes = get_primes(maximum**2 + 1)
difference = 0
MinusOneCount = 0
AddOneCount = 0
for num in range(1, maximum+1):
n = num**2 - 1
if search(n, primes):
print(f"{num}^2 - 1 = {n}")
print(f"Difference: {num - difference}")
print()
difference = num
MinusOneCount += 1
n = num**2 + 1
if search(n, primes):
print(f"{num}^2 + 1 = {n}")
print(f"Difference: {num - difference}")
print()
difference = num
AddOneCount += 1
print("--- Counts ---")
print()
print(f"MinusOneCount: {MinusOneCount}")
print(f"AddOneCount: {AddOneCount}")
def get_primes(n: int) -> list[int]:
ns = []
primes = []
ns.append(2)
for i in range(3, n + 1, 2): ns.append(i)
n = len(ns)
for i in range(1, n):
if ns[i] != 0:
b = ns[i]
a = b * 2
while ((b + a) - 1) // 2 < n:
b += a
ns[(b - 1) // 2] = 0
for i in range(n - 1):
if ns[i] != 0:
primes.append(ns[i])
return primes
def search(num: int, primes: list[int]) -> bool:
a = 0
b = len(primes) - 1
while True:
i = int((a + b) / 2)
if num > primes[i]:
a = i
elif num < primes[i]:
b = i
else:
return True
if b - a == 1:
if num == primes[a] or num == primes[b]:
return True
return False
main()
for() if() loop | Draw6 | C-- Solutions
// week 8 challenge
#include <cmath>
using namespace std;
bool isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i <= sqrt(n); i++)
{
if (n % i == 0) return false;
}
return true;
}
int main() {
int limit = 100000000;// 10000 x 10000
int plus = 0;
int minus = 0;
int keep, math, diff, square = 0;// difference markers
for (int i = 1; i * i <= limit; i++)
{
square = i * i;
math = i;
if (isPrime(square - 1))
{
diff = math - keep;
keep = square - 1;
math = square;
minus++;
std::cout << i << "^2 - 1 = " << square - 1 << "\n";
std::cout << "Difference: " << diff << "\n\n";
}
if (isPrime(square + 1))
{
diff = math - keep;
keep = i;
math = square;
plus++;
std::cout << i << "^2 + 1 = " << square + 1 << "\n";
std::cout << "Difference: " << diff << "\n\n";
}
}
std::cout << "--- Counts ---\n\n";
std::cout << "MinusOneCount: " << minus << "\n";
std::cout << "AddOneCount: " << plus << "\n";
return 0;
}
//EOF
Gen all primes and check if target number present | greenya | Odin Solutions
package main
import "core:fmt"
import "core:time"
main :: proc () {
MAX_X :: 10_000
primes := gen_primes(limit=MAX_X*MAX_X)
minus_one_count := 0
add_one_count := 0
prev_primed_x := 0
for x in 1..=MAX_X {
for s in ([2] struct { shift: int, counter: ^int } {
{ shift=-1, counter=&minus_one_count },
{ shift=+1, counter=&add_one_count },
}) {
if x*x+s.shift in primes {
fmt.printfln("%i^2 %c 1 = %i", x, s.shift>0?'+':'-', x*x + s.shift)
fmt.printfln("Difference: %i", x - prev_primed_x)
prev_primed_x = x
s.counter^ += 1
}
}
}
fmt.println("--- Counts ---")
fmt.printfln("MinusOneCount: %i", minus_one_count)
fmt.printfln("AddOneCount: %i", add_one_count)
}
@require_results
gen_primes :: proc (limit: int, allocator := context.allocator) -> map [int] struct {} {
fmt.printfln("Generating primes, limit=%i...", limit)
start := time.tick_now()
defer fmt.printfln("...done in %v", time.tick_since(start))
Number_State :: enum u8 { undefined, prime, not_prime }
numbers := make([] Number_State, limit+1, allocator=context.temp_allocator)
for n in 2..=limit {
if numbers[n] == .undefined {
numbers[n] = .prime
for k:=n+n; k<=limit; k+=n {
if numbers[k] == .undefined {
numbers[k] = .not_prime
}
}
}
}
primes := make(map [int] struct {}, allocator)
for n in 2..=limit {
if numbers[n] == .prime {
primes[n] = {}
}
}
return primes
}
Python Write to file | THOMAS L | Python Solutions
//Paste your solution here if you want to share it publicly
def IsPrime(x: int):
for i in range(2, min(x, 10000)):
# for i in range(2, x):
if x % i == 0:
return False
return True
addCount = 0
minCount = 0
prevNum = 0
with open("example.txt", "w") as file:
for a in range(1, 10001):
if IsPrime(a ** 2 - 1) and a != 1:
file.write(str(a) + "^2 - 1 = " + str(a ** 2 - 1) + "\n")
file.write("Difference: " + str(a - prevNum) + "\n\n")
minCount += 1
prevNum = a
if IsPrime(a ** 2 + 1):
file.write(str(a) + "^2 + 1 = " + str(a ** 2 + 1) + "\n")
file.write("Difference: " + str(a - prevNum) + "\n\n")
addCount += 1
prevNum = a
file.write("--- Counts ---\n")
file.write("MinusOneCount: " + str(minCount) + "\n")
file.write("AddOneCount: " + str(addCount) + "\n")
dunno | Peiran D | Python Solutions
//Paste your solution here if you want to share it publiclydef main() -> None:
maximum = 10000
primes = get_primes(maximum**2 + 1)
difference = 0
MinusOneCount = 0
AddOneCount = 0
for num in range(1, maximum+1):
n = num**2 - 1
if search(n, primes):
print(f"{num}^2 - 1 = {n}")
print(f"Difference: {num - difference}")
print()
difference = num
MinusOneCount += 1
n = num**2 + 1
if search(n, primes):
print(f"{num}^2 + 1 = {n}")
print(f"Difference: {num - difference}")
print()
difference = num
AddOneCount += 1
print("--- Counts ---")
print()
print(f"MinusOneCount: {MinusOneCount}")
print(f"AddOneCount: {AddOneCount}")
def get_primes(n: int) -> list[int]:
ns = []
primes = []
ns.append(2)
for i in range(3, n + 1, 2): ns.append(i)
n = len(ns)
for i in range(1, n):
if ns[i] != 0:
b = ns[i]
a = b * 2
while ((b + a) - 1) // 2 < n:
b += a
ns[(b - 1) // 2] = 0
for i in range(n - 1):
if ns[i] != 0:
primes.append(ns[i])
return primes
def search(num: int, primes: list[int]) -> bool:
a = 0
b = len(primes) - 1
while True:
i = int((a + b) / 2)
if num > primes[i]:
a = i
elif num < primes[i]:
b = i
else:
return True
if b - a == 1:
if num == primes[a] or num == primes[b]:
return True
return False
main()