简体   繁体   English

寻找素数时如何限制我的除数

[英]How to put a limit on my divisor when looking for a prime number

number = int(input("Enter a number: "))
prime = True

if number <= 1:
    prime = False
    divisor = 1

divisor = 2
while divisor < number and prime == True:
    if divisor == number:
        break

while divisor < number and prime == True:
    if (number > 1) % divisor == 0:
        prime = False
    elif number % divisor !=0:
        prime = True
        divisor = divisor + 1

if number == 1:
    divisor = divisor - 1
        
        
if prime == True:
    print(f"{number} is prime.")
elif prime == False:
    print(f"{number} is not prime.")
    print(f"{number} is divisible by {divisor}")

I am trying to write code to determine whether the input number is a prime number or not (not including 1).我正在尝试编写代码来确定输入数字是否为质数(不包括 1)。 It works when I put in numbers like 8, but if I put in a number like 27, the while loop goes on forever and I don't know how to fix it.当我输入像 8 这样的数字时它可以工作,但是如果我输入像 27 这样的数字,while 循环会永远持续下去,我不知道如何修复它。

Use a debugger like 'python tutor' or 'thonny'.使用像“python 导师”或“thonny”这样的调试器。 Your problem is on line 9, you have to have a way to escape the loop otherwise it goes forever because 2 is smaller than 27 and the if statement never goes to be true.你的问题在第 9 行,你必须有办法逃脱循环,否则它会永远持续下去,因为 2 小于 27 并且 if 语句永远不会为真。 You don't set any increaser/decreaser.您没有设置任何增加/减少。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM