循环的素数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
,并在此之前打印一些False
s。相反,你应该有一个变量(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的主要内容,如果未能解决你的问题,请参考以下文章