我是python的初级程序员,对我的代码有疑问我写的是:
number = int(input("Enter a random number: "))
for num in range(1, number + 1) :
for i in range(2, num) :
if (num % i) == 0 :
break
else :
print(num)
break
当我运行这个程序时,我也得到9,15 21作为输出。但这些不是素数。 我的代码出了什么问题?
谢谢!
答案 0 :(得分:2)
使用if (num % i) == 0:
时,对于每个else
,您都会转到num
块,这不是2的乘法,因为您以2开始i
,因此打印{{ 1}}。我用你的代码打印了所有奇数。
您可以使用以下内容:
num
当number = int(input("Enter a random number: "))
for num in range(1, number + 1):
prime = True
for i in range(2, num):
if (num % i) == 0:
prime = False
break
if prime:
print(num)
遇到没有休息的除数时,它会将prime
设置为False
。
答案 1 :(得分:0)
麻烦在于你的else语句,它必须在第一个循环之外运行。我推荐以下内容:
def isprime(num):
for i in range(2, num):
if (num % i) == 0:
return False
return True
for num in range(1, number + 1) :
if isprime(num):
print num
答案 2 :(得分:0)
你的问题
你放入for循环的else语句意味着如果那个数字(num)可以被i表示的当前整数整除,则返回true,将其视为不正确的素数。
建议
您的外部循环以1开头,应该更改为2,因为1不是素数
解决方案
def fun(number):
#Not counting 1 in the sequence as its not prime
for num in range(2, number + 1) :
isPrime = True
for i in range(2, num) :
if (num % i) == 0 :
isPrime = False
break
if isPrime:
print num
fun(10)
<强>输出强>
1
2
3
5
7
答案 3 :(得分:0)
我假设随机数是您希望数字在其中的范围。
我发现代码中的变量i总是等于2.这破坏了第二个for循环的目的
素数是不能被2,3或7整除的数字,不包括2,3或7!
凭借这些知识,我调整了你的代码来显示真正的素数。
溶液
number = int(input("Enter a random number: "))
for num in range(2,number +1) :
printnum = True
if num == 2:
printnum = True
elif num == 3:
printnum = True
elif num == 7:
printnum = True
elif num % 2 == 0:
printnum = False
elif num % 3 == 0:
printnum = False
elif num % 7 == 0:
printnum = False
if printnum == True:
print(num)
答案 4 :(得分:0)
这是我的方法,用于生成前十个素数而没有任何导入,只是带有我们正在大学学习的组件的简单代码。我将这些数字保存到列表中。
def main():
listaPrim = []
broj = 0
while len(listaPrim) != 10:
broj+= 1
brojac = 0
for i in range(1,100):
if broj % i == 0:
brojac += 1
if brojac == 2:
listaPrim.append(broj)
print(listaPrim)
if __name__=='__main__':
main()