user17702085
user17702085

Reputation:

Prime number in Python

#Write your code below this line ๐Ÿ‘‡
def prime_checker(number):
    for num in range (2, number):
        if num % number == 0:
            print("It is not a prime number")
        else:
            print("It is a prime number")


#Write your code above this line ๐Ÿ‘†
    
#Do NOT change any of the code below๐Ÿ‘‡
n = int(input("Check this number: "))
prime_checker(number=n)

How can I print a text that number is prime or not only once?

Upvotes: 0

Views: 1230

Answers (4)

user17285516
user17285516

Reputation:

I think it's good to check a number is prime or not

def is_prime(n):
    st = "prime" #  being prime status

    for i in range(2,n):
        if n % i == 0: # if number is prime
            st = "not prime"
            break;


    return st 



n = int(input("enter n:  "))
print (is_prime(n))

You only need to change the end of your code
your function is true except for these lines:

if num % number == 0:
    print("It is not a prime number")
else:
    print("It is a prime number") 

you should change these to:

st = "Prime"
if number % num == 0:
    st = "not prime"
    return st

Upvotes: 0

azro
azro

Reputation: 54148

Fix

number % num == 0 and not num % number == 0

A number isn't prime the moment you find a number that doesn't divide it, but only when you have tested all and none divides it

Use for/else construction, it goes into else if no break has been used

def prime_checker(number):
    for num in range(2, number):
        if number % num == 0:
            print("It is not a prime number")
            break
    else:
        print("It is a prime number")

Note that this only fixes your way to do, but that isn't the optimal way to check if a numbre is a prime one, at least, ending range at square root of number, and directly verifying division by small numbers like 2,3,5,7

Upvotes: 2

Srikanth Kantamaneni
Srikanth Kantamaneni

Reputation: 208

There are few mistakes in your code. I have modified them.

def prime_checker(number):
    for num in range(2, number):
        if number % num == 0:
            print('Not prime')
            return
    print('Prime number')
# Write your code above this line ๐Ÿ‘†

# Do NOT change any of the code below๐Ÿ‘‡
n = int(input("Check this number: "))
prime_checker(number=n)

For loop is to check if any of the number starting from 2 is a factor of number or not.

Upvotes: 0

niko
niko

Reputation: 5281

First, a slightly more efficient prime check by

  • going until the sqrt of the number only
  • going in steps of 2
import math


def is_prime(n: int) -> bool:
    if n in (2, 3, 5):
        return True
    if n < 2 or n % 2 == 0:
        return False
    for i in range(3, math.ceil(math.sqrt(n)), 2):
        if n % i == 0:
            return False
    return True

Now you can wrap that function in yours

def prime_checker(n: int):
    msg = "%d is prime" if is_prime(n) else "%d is not prime"
    print(msg % n)


prime_checker(11)
# 11 is prime

Upvotes: 0

Related Questions