Python Forum
check if the number is a prime integer
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
check if the number is a prime integer
#1
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
Reply
#2
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.
Reply
#3
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)
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply
#4
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
Reply
#5
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.
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply
#6
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))
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Prime number detector Mark17 5 735 Nov-27-2023, 12:53 PM
Last Post: deanhystad
  extracting x from '(x)' as an integer number Hwolff1962 3 827 Mar-23-2023, 02:50 PM
Last Post: Hwolff1962
  Pairs of multiplied prime number--->N Frankduc 13 3,378 Jan-16-2022, 01:52 PM
Last Post: Frankduc
  Factorial Code is not working when the given number is very long integer Raj_Kumar 2 2,258 Mar-31-2020, 06:40 PM
Last Post: deanhystad
  How to check if user entered string or integer or float?? prateek3 5 11,280 Dec-21-2019, 06:24 PM
Last Post: DreamingInsanity
  Is 2 a prime number? for loop & range fuction in python docs says yes, mine says no. allusernametaken 4 2,843 Nov-17-2019, 02:56 AM
Last Post: allusernametaken
  Error when entering letter/character instead of number/integer helplessnoobb 2 6,980 Jun-22-2019, 07:15 AM
Last Post: ThomasL
  Creating a program to look for the largest prime number of a number Wikki14 4 3,834 Sep-08-2018, 12:30 AM
Last Post: Skaperen
  Unexpected result in simple prime number example jackhj 2 2,951 Apr-20-2018, 01:48 AM
Last Post: jackhj
  python prime number algorithm zowhair 3 3,775 Dec-20-2017, 06:22 PM
Last Post: zowhair

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020