假设函数的可用性is_prime.假设变量n已与正整数相关联.写下计算前n个素数之和所需的语句.总和应与变量total相关联.
注意: is_prime取一个整数作为参数,True当且仅当该整数为素数时才返回.好吧,我写了这样的is_prime函数:
def is_prime(n):
n = abs(n)
i = 2
while i < n:
if n % i == 0:
return False
i += 1
return True
Run Code Online (Sandbox Code Playgroud)
但它的工作原理除了n == 0.如何修复它以使其适用于每个整数?我试图找到如何编写函数以获得前n个素数之和以及如何修改我的is_prime函数的答案,这应该适用于所有可能的输入,而不仅仅是正数.
您的任务如下.
假设函数is_prime的可用性.假设变量n已与正整数相关联.写下计算前n个素数之和所需的语句.总和应与变量total相关联.
正如NVRAM在评论中正确指出的那样(并没有其他人似乎已经接受),问题陈述"假设一个函数的可用性is_prime".
你不具备编写功能.什么你做必须做的是"写来计算前n个素数的和所需要的报表".
伪代码就像这样:
primes_left = n
curr_num = 2
curr_sum = 0
while primes_left > 0:
if is_prime(curr_num):
curr_sum = curr_sum + curr_num
primes_left = primes_left - 1
curr_num = curr_num + 1
print "Sum of first " + n + " primes is " + curr_sum
Run Code Online (Sandbox Code Playgroud)
我想你会发现,如果你只是用你选择的语言实现那个伪代码,那就完全是你所要做的.
如果你正在寻找一个is_prime测试你的作业的实现,它的效率并不重要,因为你只会测试一些小的值.考虑到将使用它的代码的限制,您也不必担心少于两个的数字.像这样的东西是完全可以接受的:
def is_prime(num):
if num < 2:
return false
if num == 2:
return true
divisor = 2
while divisor * divisor <= num:
if num % divisor == 0:
return false
divisor = divisor + 1
return true
Run Code Online (Sandbox Code Playgroud)