循环的素数python

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了循环的素数python相关的知识,希望对你有一定的参考价值。

题:

一个程序,它将正整数n作为输入,如果n是素数,则返回True,否则返回False。

我的答案:

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

当我输入素数时,它可以工作,但是当我输入非素数时,它不起作用。

例:

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

请帮忙!

答案

你可以break并使用else

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

只有当循环完全完成时才会打印True,即n % i不等于0。

另一答案

你的代码总是在最后打印True,并在此之前打印一些Falses。相反,你应该有一个变量(isPrime?),它被初始化为True,当你发现它被某些东西整除时,它被设置为False。然后在最后打印该变量。

另一答案

你只是打印每个中间值,如果你在一个函数中使用return它工作正常

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

>>> prime(5)
True
>>> prime(12)
False
另一答案

有很多不同的方法可以修复你的代码,但所有这些方法都取决于如果你找到一个除数你应该突破那个循环的事实(即如果n%i == 0

通常,你有一个布尔值存储你是否找到了除数,但python允许你做以下

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)
另一答案

在这里查看算法:

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")
另一答案

你可以在这里使用for-else子句。此外,您不需要超出n的平方根:

import math

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

如果你遇到i,它给n模数为零,那么你必须打印False然后什么都不做。为此,您可以使用flag变量来处理这种情况。如果没有遇到这样的i,旗帜仍然是1并打印True

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)
另一答案

检查这个,它应该清楚为什么else语句缩进'非常规':

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)

以上是关于循环的素数python的主要内容,如果未能解决你的问题,请参考以下文章

Python 探讨斐波拉契数列模素数的周期问题

素数python for循环

特有的循环结构(for-elsewhile-else)——Python篇

python基本语法2.8--找出100以内的素数

python进阶练习之——算素数

用C++编写程序求100以内的所有素数(质素)的和。