Python Forum

Full Version: [split] Prime numbers
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
def is_prime(num): #function to check if a number is prime
    if num < 2: #numbers less than 2 aren't prime
        return False
    for i in range(2, int(num ** 0.5) + 1): # check for divisibility from 2 up to the square root of the number
        if num % i == 0: #if divisible, not prime
            return False
    return True #if no divisors, prime

def non_primes_range(start, end): #returns a list of non-prime numbers within the given range
    if start > end: #makes sure start is less than or equal to end, swaps if necessary
        start, end = end, start
    return [num for num in range(start, end + 1) if not is_prime(num)] #generates and returns a list of non-prime numbers in the range given

def main(): #main function drives the program
    try:
        start = int(input("Enter the first positive integer: ")) #asks the user to input two positive integers
        end = int(input("Enter the last positive integer: "))
        if start < 0 or end < 0: #checks if input integers are positive
            print("ERROR: Both number must be positive integers")
            return
        non_primes = non_primes_range(start, end) #gets list of non-prime numbers in the range
        print("\nNon-prime numbers in the range:") #displays non-prime numbers in the range, eight numbers per list
        for i in range(0, len(non_primes), 8):
            print(" ".join(map(str, non_primes[i:i+8]))) #prints 8 numbers per line
    Except ValueError:
        print("ERROR: Invalid input! Please enter positive integers only.") #if user enters a non-integer value, displays an error message

if __name__ == "__main__": #entry point of program
    main()
And the question is?