import sys

import numpy as np


def is_prime(number):
    if number < 2:
        return False
    if number == 2:
        return True
    if number % 2 == 0:
        return False

    limit = int(np.sqrt(number)) + 1
    for factor in range(3, limit, 2):
        if number % factor == 0:
            return False
    return True


def main():
    upper_limit = 100_000
    primes = [number for number in range(2, upper_limit + 1) if is_prime(number)]

    print("Hello from a Python/Conda environment inside Apptainer")
    print(f"Python executable: {sys.executable}")
    print(f"NumPy version: {np.__version__}")
    print(f"Prime search limit: {upper_limit}")
    print(f"Number of primes found: {len(primes)}")
    print(f"Largest prime found: {primes[-1]}")


if __name__ == "__main__":
    main()
