0

I'm making code that can determine whether the number entered by the user is prime or not. But I kept running into a bug that oddly enough, my friend's code didn't, even though our codes was the same down to the letter.

#my friend's
num = int(input())

if num > 1:
   for i in range(2,num):
       if (num % i) == 0:
           print(num,"is not a prime number")
           print(i,"times",num//i,"is",num)
           break
   else:
       print(num,"is a prime number")
else:
   print(num,"is not a prime number")
#mine
num = int(input())

if num > 1:
    for i in range(2,num):
        if (num % i) == 0:
            print(num,"is not a prime number")
            print(i,"times",num//i,"is",num)
            break
        else:
            print(num,"is a prime number")
else:
    print(num,"is not a prime number")

If I enter 121 to my friend's code, the output will be:

121
121 is not a prime number
11 times 11 is 121

But if I enter 121 to my code, the output will be:

121
121 is a prime number
121 is a prime number
121 is a prime number
121 is a prime number
121 is a prime number
121 is a prime number
121 is a prime number
121 is a prime number
121 is a prime number
121 is not a prime number
11 times 11 is 121

What's wrong with mine?

najma
  • 11
  • 1

2 Answers2

0

Look at your indentation. Your friends code does for or else, your code does if or else. Read more about why else can be used with for here.

#your friend's
...
   for i in range(2,num): 
       if ...
   else: # enters when `for` loop breaks
       ...
   
#you
...
    for i in range(2,num):
        if (num % i) == 0:
            ...
        else: # enters when `if` returns false
            ...
0

There is indentation issue with your code.

#my friend's
num = int(input())

if num > 1:
   for i in range(2,num):
       if (num % i) == 0:
           print(num,"is not a prime number")
           print(i,"times",num//i,"is",num)
           break
       else:
           print(num,"is a prime number")
else:
   print(num,"is not a prime number")

Here i

#mine
num = int(input())

if num > 1:
    for i in range(2,num):
        if (num % i) == 0:
            print(num,"is not a prime number")
            print(i,"times",num//i,"is",num)
            break
        else:
            print(num,"is a prime number")
else:
    print(num,"is not a prime number")
Engr.Aftab Ufaq
  • 3,356
  • 3
  • 21
  • 47