2024-06-02 07:44:02 发布
网友
print "Type a number" num = int(raw_input("> ")) if num % 2 == 0: print "This is not a prime number" else: print "This is a prime number"
当我键入'9'时,它显示它是一个质数,但它不是:
我的代码太简单了吗?有什么东西没查到吗?在
为了检查这个数是否是素数,你必须验证它是否可以被[2,sqrt(n)]范围内的任何数设计。在
以下代码完全相同:
import math def is_prime(n): for i in range(2, int(math.sqrt(n))+1): if n % i == 0: return False return True
这个方法对小数字很好,但是如果n是真正的大数,那么您需要更快的方法。在这个例子中,你可以使用Miller–Rabin primality检验,它以一定的概率检验素性。在
你只检查它是否是偶数,通过检查它是否可以被2整除。但是9可以被3整除,所以你也需要检查一下。最简单的方法是检查所有的数,直到检查素数的平方根。在
你要做的就是检查一个数是否可以被2整除。由于9/2=4.5,它不能被2整除,因此转到else子句。在
以下是您可能想要的精简版:
def is_prime(a): return all(a % i for i in xrange(2, a))
为了检查这个数是否是素数,你必须验证它是否可以被[2,sqrt(n)]范围内的任何数设计。在
以下代码完全相同:
这个方法对小数字很好,但是如果n是真正的大数,那么您需要更快的方法。在这个例子中,你可以使用Miller–Rabin primality检验,它以一定的概率检验素性。在
你只检查它是否是偶数,通过检查它是否可以被2整除。但是9可以被3整除,所以你也需要检查一下。最简单的方法是检查所有的数,直到检查素数的平方根。在
你要做的就是检查一个数是否可以被2整除。由于9/2=4.5,它不能被2整除,因此转到else子句。在
以下是您可能想要的精简版:
相关问题 更多 >
编程相关推荐