Python Forum
check if the number is a prime integer - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: check if the number is a prime integer (/thread-21354.html)



check if the number is a prime integer - atlass218 - Sep-25-2019

Hi; I have just created a small application that has the role of testing and verifying if the number introduced by the user is a number first or not. here is the code:

import math

my_number =int(input('Enter your number '))
liste_number=[]

for chiffre in range(2,my_number) :
    quotient=my_number%chiffre
    liste_number=liste_number +[quotient]

if 0 in liste_number :
    print('the number entered is not a prime number')

else:
     print('the number entered is a prime number')
I tested the code, it works very well. I wonder there is a better code than mine
thank you


RE: check if the number is a prime integer - micseydel - Sep-25-2019

I would get rid of liste_number entirely. Just exit the loop if you find there's no remainder, and print the message. That would be faster, but I also think it would be easier to read.


RE: check if the number is a prime integer - perfringo - Sep-26-2019

Efficiency is not very important here as only one number is checked but still I would grab low hanging fruits first and only after that deploy brute force.

'low hanging fruits':

- if number is 1 -> not prime
- if number is even -> not prime

'brute force'

- check quotient, but only by dividing with odd numbers (as we already determined that number is not even)


RE: check if the number is a prime integer - atlass218 - Sep-26-2019

hi; I modify the code to give it more perfection, but I have not managed to delete the list (list_number) as suggested above.
here is the new code :

import math

print("Enter any integer number")

my_number =int(input('Entrer un nombre '))
liste_number=[]

for chiffre in range(2,my_number) :
    quotient=my_number%chiffre
    liste_number=liste_number +[quotient]


if my_number ==0:
    print("the number {} is zero, not prime".format(my_number))

elif my_number==1:
    print("the number {} is equal to 1, not prime".format(my_number))

elif 0 in liste_number :
    print("the number  {} is not prime".format(my_number))

else:
    print('the number{} is prime'.format(my_number))
thank you for all suggestions


RE: check if the number is a prime integer - perfringo - Sep-26-2019

I forgot to mention, the there is one even number which is prime - 2.

But I had something like below in mind:

def prime_checker(integer): 
    if integer == 2:                        # eliminate 2
        return True 
    if integer == 1 or integer % 2 == 0:    # eliminate 1 and all even integers (incl 0)
        return False 
    for i in range(3, integer, 2):          # divide only with odd numbers as integer can't be even
        if integer % i == 0: 
            return False 
    else: 
        return True
Now you can use this function for generating whatever message:

>>> num = 7                                               
>>> print(f"Number {num} is {'prime' if prime_checker(num) else 'non-prime'}")                                   
Number 7 is prime
>>> num = 8
>>> print(f"Number {num} is {['non-prime', 'prime'][prime_checker(num)]}")      # alternative way                                      
Number 8 is non-prime
Of course, one can return 'prime', 'non-prime' instead of True and False but then it's not general purpose any more.


RE: check if the number is a prime integer - atlass218 - Sep-26-2019

I rectify my code : I forget the case (number =2) like that :

import math
 
print("Enter any integer number")
 
my_number =int(input('Entrer un nombre '))
liste_number=[]
 
for chiffre in range(3,my_number) :
    quotient=my_number%chiffre
    liste_number=liste_number +[quotient]
 
if my_number ==0:
    print("the number {} is not prime".format(my_number))
 
elif my_number==1:
    print("the number {} is not prime".format(my_number))

elif my_number==2:
    print("the number {} is an even number prime".format(my_number))
 
elif 0 in liste_number :
    print("the number  {} is a not prime".format(my_number))

else:
    print('the number{} is prime'.format(my_number))