【问题标题】:Not sure why my code to check if a number is prime is not working?不知道为什么我检查数字是否为素数的代码不起作用?
【发布时间】:2020-11-27 18:24:54
【问题描述】:

我需要创建一个程序来检查一个数字是否是素数,它首先提示用户输入一个数字,然后输入一个最多 3 个字符的字符串。如果通过键盘输入超过 3 个字符,程序应输出消息并退出。如果通过键盘输入非数字字符,程序应输出消息 Invalid input and exit。如果输入有效,程序应该显示 输入的消息号是质数或输入的消息号不是质数。

我目前有确定数字是否为素数的代码,但它似乎不起作用,当输入的数字是素数时,它不会给出“是素数”的输出。谁能看到我的质数代码哪里出错了?

def isPrime(n):
    for i in range(2, n):
            if (num % i) == 0:
                print("is not a prime number")
                break
    else:
            print("is a prime number")


str = input('Please enter a decimal number: ')
try:
    n = int(str)

    if len(str) > 3:
        print ('Invalid input')
    sys.exit()

    if isPrime(n):
        print ('Number entered is a prime number')
    else:
        print ('Number entered is not a prime number')
except:
    print ('Number is not a prime number')

【问题讨论】:

  • 你是在问如何测试一个数字是否大于 3?
  • 所以你问如何判断字符串的length 是否大于3?

标签: python string decimal primes


【解决方案1】:

使用 input() 命令提示用户输入。你得到的是一个字符串。 然后你可以把它变成一个整数并做出不同的情况。 注意:如果你输入一个浮点数,int(str) 会爆炸,你会收到一条消息 输入无效。也许你还应该包括一个例子,你检查输入是否是一个数字,而不是一个整数。

import sys

def isPrime(n):

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

    return True

str = input('Give an integer, with no more than 3 digits: ')
try:
    n = int(str)

    if len(str) > 3:
        print ('Invalid input! Up to three digits!')
        sys.exit()

    if isPrime(n):
        print ('Is prime')
    else:
        print ('Not prime')

except:
    print ('Invalid input! Not a number')

【讨论】:

  • 希望这能起到作用:)
  • 谢谢!只是一件事,如果数字实际上是素数,那么输出似乎不是“素数”?例如,如果您输入 2,则表示不是素数
  • 嘿,我注意到您更改了 isPrime() 函数。我还根据您的算法编辑了上面的代码,现在对于值 2 似乎工作正常。希望这能解决它:)
猜你喜欢
  • 2020-09-19
  • 2014-01-17
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
  • 2020-02-05
  • 1970-01-01
  • 2021-10-19
相关资源
最近更新 更多