'To generate laundau's prime numbers using python

I want to generate list of primes of the format x2+1 but I am not getting any output.
My code:

def LPrime(n):

    for i in range(1,n):
        x = i**2+1;
        for j in range(2,x):
            if x % j != 0:
                print(x,i)

Please tell me what am I doing wrong. The expected output should be something like

2,1
5,2

and so on
Also I am not able to execute it properly, I am using Ubuntu 22.04
There is no output when I try to

terminal



Solution 1:[1]

If if x % j == 0: you have a divisor. and j will not be 1 or x. So you should mark p as False (there is no prime). else, it is a prime; print it.

def LPrime(n):

    for i in range(0, n):
        x = i**2+1
        p = True
        for j in range(2, x):
            if x % j == 0:
                p = False

        if p:
            print(f"Prime = {x},\t i = {i}")

Don't forget to call it

>>> LPrime(4)
Prime = 1,       i = 0
Prime = 2,       i = 1
Prime = 5,       i = 2

If you want n primes, use a while loop:

def LPrime(n):

    count = 0
    i = 0

    while count < n:
        x = i**2+1
        p = True
        for j in range(2, x):
            if x % j == 0:
                p = False

        if p:
            print(f"Prime = {x},\t i = {i}")
            count += 1
        i += 1
>>> LPrime(4)
Prime = 1,       i = 0
Prime = 2,       i = 1
Prime = 5,       i = 2
Prime = 17,      i = 4

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1