prime number python for loops

人走茶凉 提交于 2020-01-15 14:27:12

问题


Question:

A program that take a positive integer n as input and returns True if n is a prime number, otherwise returns False.

My Answer:

n = int(input("Enter a number: "))
for i in range(2,n):
    if n%i == 0:
        print(False)
print(True)

when I enter a prime number it works but when I enter a non prime number it doesn't work.

Example:

>>> 
Enter a number: 12
False
False
False
False
True
>>> 

please help!


回答1:


You can break and use else:

n = int(input("Enter a number: "))
for i in range(2, n):
    if n % i == 0:
        print(False)
        break
else: 
    print(True)

True will only be printed if the loop completes fully i.e no n % i was equal to 0.




回答2:


Your code always prints True at the end, and prints a number of Falses before that. Instead, you should have a variable (isPrime?) that gets initialized to True and gets set to False when you find it is divisible by something. Then print that variable at the end.




回答3:


You're just printing each intermediate value, if you use return in a function it works fine

def prime(n):
    for i in range(2, n):
        if n%i == 0:
            return False
    return True

>>> prime(5)
True
>>> prime(12)
False



回答4:


You could use the for-else clause here. Also, you don't need to go beyond the square root of n:

import math

for i in range(2, int(math.sqrt(n))):
    if n % i == 0:
        print "False"
        break
else:
    print "True"



回答5:


There's a lot of different ways to fix your code, but all of them hinge on the fact that you should be breaking out of that loop if you find a divisor (ie if n%i == 0)

Usually, you'd have a boolean value storing whether or not you've found a divisor, but python lets you do the following

n = int(input("Enter a number: "))
for i in range(2,n):
    if n%i == 0:
        print(False)
        break
else:
    #else statement only happens if you don't break out of the loop
    print(True)



回答6:


Check out the algorithm here:

http://www.programiz.com/python-programming/examples/prime-number

# Python program to check if the input number is prime or not

# take input from the user
num = int(input("Enter a number: "))

# prime numbers are greater than 1
if num > 1:
   # check for factors
   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")

# if input number is less than
# or equal to 1, it is not prime
else:
   print(num,"is not a prime number")



回答7:


If you encounter an i which gives modulo zero with n, then you have to print False and then do nothing. For this you can use a flag variable which takes care of this condition. If no such i is encountered, flag remains 1 and True is printed.

n = int(input("Enter a number: "))
flag = 1
for i in range(2,n):
    if n%i == 0:
        print(False)
        flag = 0
        break
if flag:
    print(True)



回答8:


check this one, it should make clear why the else statement is indented 'non conventionally':

num = int(input('Enter the maximum value: '))

for number in range(3, num+1):
    #not_prime = False
    for factor in range(2, number):

        if number%factor == 0:
            #not_prime = True
            break
    #if not_prime:
        #continue
    else:
        print(number)



回答9:


All of the above things are correct but I want to add thing that you should check for the condition of 1. if someone puts 1 as an integer you will have to return False. 1 is not prime




回答10:


def prime_num(num):
    if num <= 0:
        return "the number is not primary"
    for i in range(2, num - 1):
        if num % i == 0:
            return "The number is not primary, it can be divided: " + str(i)
    return "The number: " + str(num) + " is primary"


来源:https://stackoverflow.com/questions/31122454/prime-number-python-for-loops

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!