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 TrueNow 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-primeOf 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)) |