A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://www.geeksforgeeks.org/python-program-for-legendres-conjecture/ below:

Python Program for Legendre's Conjecture

Python Program for Legendre's Conjecture

Last Updated : 23 Jul, 2025

It says that there is always one prime number between any two consecutive natural number\'s(n = 1, 2, 3, 4, 5, ...) square. This is called Legendre's Conjecture. Conjecture: A conjecture is a proposition or conclusion based upon incomplete information to which no proof has been found i.e it has not been proved or disproved.

Mathematically, there is always one prime p in the range  n^2        to  (n + 1)^2        where n is any natural number. for examples- 2 and 3 are the primes in the range  1^2        to  2^2        . 5 and 7 are the primes in the range  2^2        to  3^2        . 11 and 13 are the primes in the range  3^2        to  4^2        . 17 and 19 are the primes in the range  4^2        to  5^2        .

Examples:

Input : 4 
output: Primes in the range 16 and 25 are:
17
19
23

Explanation: Here 42 = 16 and 52 = 25 Hence, prime numbers between 16 and 25 are 17, 19 and 23.

Input : 10
Output: Primes in the range 100 and 121 are:
101
103
107
109
113
Python3
# Python program to verify Legendre's Conjecture 
# for a given n 

import math 

def isprime( n ): 
    
    i = 2
    for i in range (2, int((math.sqrt(n)+1))): 
        if n%i == 0: 
            return False
    return True
    
def LegendreConjecture( n ): 
    print ( "Primes in the range ", n*n 
            , " and ", (n+1)*(n+1) 
            , " are:" ) 
            
    
    for i in range (n*n, (((n+1)*(n+1))+1)): 
        if(isprime(i)): 
            print (i) 
            
n = 50
LegendreConjecture(n) 

# Contributed by _omg 

Output :

Primes in the range 2500 and 2601 are:
2503
2521
2531
2539
2543
2549
2551
2557
2579
2591
2593

Time Complexity: O(n*sqrtn). isPrime() function takes O(n) time and it is embedded in LegendreConjecture() function which also takes O(n) time as it has loop which starts from n2 and ends at 
(n+1)2   so,  (n+1)2 - n2 = 2n+1.

Auxiliary Space: O(1)

METHOD 2: 

Instead of iterating through a range of numbers to check for prime numbers, the new approach uses the sympy library to generate all prime numbers in a given range.

NOTE: First you will have to install the sympy library using the following command: pip install sympy

Python3
import sympy

def LegendreConjecture(n):
      # Find all prime numbers in the given range
    primes = list(sympy.primerange(n*n, (n+1)*(n+1)))
    
    # Print the prime numbers
    print(f"Primes in the range {n*n} and {(n+1)*(n+1)} are:\n")
    for i in range(len(primes)):
      print(primes[i])
    
n = 50
LegendreConjecture(n)

# Contributed by adityasha4x71

Output :

Primes in the range 2500 and 2601 are:
2503
2521
2531
2539
2543
2549
2551
2557
2579
2591
2593

Time complexity: O(n log log n), as the sieve of Eratosthenes algorithm has a time complexity of O(n log log n) for finding all primes up to n, and the algorithm used here is a modified version of the sieve of Eratosthenes.

Auxiliary Space: O(n), because the algorithm uses a boolean list of size n+1 to keep track of whether each number is prime or not.

Please refer complete article on Legendre's Conjecture for more details!



RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4