质数 python for 循环
prime number python for loops
问题:
一个以正整数 n 作为输入的程序,如果 n 是质数,returns 为真,否则 returns 为假。
我的回答:
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
>>>
请帮忙!
您的代码 总是 在末尾打印 True
,并在此之前打印多个 False
。相反,您应该有一个变量 (isPrime
?),当您发现它可以被某些东西整除时,它被初始化为 True
并设置为 False
。然后在最后打印那个变量。
如果遇到 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)
你只是打印每个中间值,如果你在函数中使用 return
它工作正常
def prime(n):
for i in range(2, n):
if n%i == 0:
return False
return True
>>> prime(5)
True
>>> prime(12)
False
在这里查看算法:
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")
您可以 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。
您可以在此处使用 for-else 子句。此外,您不需要超出 n
:
的平方根
import math
for i in range(2, int(math.sqrt(n))):
if n % i == 0:
print "False"
break
else:
print "True"
有很多不同的方法来修复你的代码,但所有这些都取决于这样一个事实,即如果你找到一个除数(即如果 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)
检查这个,它应该清楚 else
语句缩进的原因 '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)
以上所有内容都是正确的,但我想补充一点,您应该检查 1 的条件。如果有人将 1 作为整数,您将不得不 return False。 1 不是素数
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"
这是众多解决方法之一:
def is_prime(num):
if (num == 2):
return True
elif any(x for x in range(2, num - 1) if (num % x == 0)):
return False
else:
return True
问题:
一个以正整数 n 作为输入的程序,如果 n 是质数,returns 为真,否则 returns 为假。
我的回答:
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
>>>
请帮忙!
您的代码 总是 在末尾打印 True
,并在此之前打印多个 False
。相反,您应该有一个变量 (isPrime
?),当您发现它可以被某些东西整除时,它被初始化为 True
并设置为 False
。然后在最后打印那个变量。
如果遇到 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)
你只是打印每个中间值,如果你在函数中使用 return
它工作正常
def prime(n):
for i in range(2, n):
if n%i == 0:
return False
return True
>>> prime(5)
True
>>> prime(12)
False
在这里查看算法:
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")
您可以 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。
您可以在此处使用 for-else 子句。此外,您不需要超出 n
:
import math
for i in range(2, int(math.sqrt(n))):
if n % i == 0:
print "False"
break
else:
print "True"
有很多不同的方法来修复你的代码,但所有这些都取决于这样一个事实,即如果你找到一个除数(即如果 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)
检查这个,它应该清楚 else
语句缩进的原因 '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)
以上所有内容都是正确的,但我想补充一点,您应该检查 1 的条件。如果有人将 1 作为整数,您将不得不 return False。 1 不是素数
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"
这是众多解决方法之一:
def is_prime(num):
if (num == 2):
return True
elif any(x for x in range(2, num - 1) if (num % x == 0)):
return False
else:
return True