我从今年开始学习计算机科学,现在我正在学习Python(:所以,请问,如果我的问题对您来说很愚蠢,请不要生我的气,在阅读旧问题时我没有找到任何答案。 ...
我正在尝试验证列表中的数字是素数。
这是我的验证素数列表的代码:
vetor = [2,3,4,5,11,15,20]
divisions_list = []
def isprime():
divisions = 0
i = 0
for i in range(1, vetor[i+1]):
if i % i == 0:
divisions = divisions + 1
divisions_list.append(divisions)
if divisions == 2:
print('The number {} is prime'.format(vetor[i]))
else:
print('The number {} is not prime'.format(vetor[i]))
print(isprime())
但这不起作用...
我只收到:
数字3不是素数数字4是素数无
如果您读到这里,可以给我一些建议吗?非常感谢!
答案 0 :(得分:2)
您已经有一段使用数字的代码,并检查它是否为质数,然后,您重新使用了滚轮,并在此过程中对其进行了破坏(例如,重复使用{{1 }}导致被零除,并试图检查列表是否等于2,而不是检查列表的长度是否为2)。
使用功能来重用工作代码并进行一些改进:
您实际上并不关心要检查的数字有多少个数字。一个数字除以该数字就不会是素数就足够了
我们可以从2开始进行除法检查,并且在数学上证明了足以达到数字的平方根
i
然后将其与数字列表一起使用:
from math import sqrt
def is_prime(n):
for i in range(2, int(sqrt(n)) + 1):
if n % i == 0:
return False
return True
输出
vector= [2, 3, 4, 5, 11, 15, 20]
for n in vector:
if is_prime(n):
print(n, 'is a prime')
else:
print(n, 'is not a prime')
答案 1 :(得分:0)
整数x的最大除数,确定为x // 2而不是sqr(x)而不是sqrt(x)+1,这是数学的
例如x = 16,sqrt(x)= 4,sqr(x)+ 1 = 5 但是16的最大除数是8(真的16 // 2)
"""
verify prime or not in a list of number
"""
# my function :)
def isPrime(x):
"""
function get an integer as argument, and return True if this argument is prime and False if not
"""
i = 2
while i<=x//2 :
if x%i != 0:
i += 1
else:
return False
return True
# your code :)
vetor = [2,3,4,5,11,15,20]
# for all elements e in vetor
for e in vetor:
# test the return of isPrime function applied to arg e
if isPrime(e):
print("{} is prime number".format(e))
else:
print("{} is not prime number".format(e))
答案 2 :(得分:0)
我相信这个问题比您要解决的要简单。您拥有所需的大部分零件,但是我们需要添加一些东西,扔很多东西,然后重新排列一下:
vetor = [2, 3, 4, 5, 11, 15, 20]
def isprime():
for number in vetor:
if number < 2:
print('The number {} is not prime'.format(number))
continue
i = 2
while i * i <= number:
if number % i == 0:
print('The number {} is not prime'.format(number))
break
i += 1
else: # no break
print('The number {} is prime'.format(number))
isprime()
其他答案包含的许多其他代码都与效率有关,还有很多东西要学习。但是以上内容足以使代码正常工作。
输出
> python3 test.py
The number 2 is prime
The number 3 is prime
The number 4 is not prime
The number 5 is prime
The number 11 is prime
The number 15 is not prime
The number 20 is not prime
>
我最喜欢包含在素数测试中的数字是25,因为使用<
而不是<=
会使它变成素数!