python - 计算多项式的素数结果
问题描述
有人可以帮助我并告诉我为什么这不起作用吗?目标是计算给定多项式对指定范围 [a,b] 内的输入 n 产生的素数的数量:
def count_primes(poly, a, b):
primes = 0
if b >= a:
for n in range(a, b):
result = poly(n)
if result > 1:
for i in range(2, result):
if (result % i) == 0:
break
else:
primes += 1
else:
break
return primes
def poly(n):
return n**2 + n + 41
print(count_primes(poly, 0, 39))
在这种情况下,结果应该返回 40。
[2] 问题解决步骤 1。输入要检查的数字并将其存储在变量中。第2步。将计数变量初始化为 0。 步骤 3。让 for 循环范围从 2 到数字的一半(不包括 1 和数字本身)。第4步。然后使用 if 语句找到除数的数量,并每次递增 count 变量。步骤 5。如果除数的个数小于或等于 0,则该数是素数。步骤 6。打印最终结果。步骤 7。出口。
解决方案
这是计算素数的错误方法:
if result > 1:
for i in range(2, result):
if (result % i) == 0:
break
else:
primes += 1
应该:
if result > 1:
isPrime = True
for i in range(2, result):
if (result % i) == 0:
isPrime = False
break
if isPrime:
primes += 1
此外,它不言而喻。素数检测的简单优化。你只需要用 2 和 3 到 sqrt(result) 之间的所有奇数来测试整除性。
推荐阅读
- typescript - React Native 客户端和管理节点服务器上的 FirebaseFirestore.Timestamp 与 firebase.firestore.Timestamp
- ffmpeg - 在视频结束 30 秒之前添加视频结束屏幕使用 ffmpeg
- json - Vue.js - 如何通过 axios 响应数据从对象中获取指定字段
- java - 初始化变量表示它未初始化
- asp.net - ASP.NET Core 身份注册 XSRF/CSRF 保护
- shell - Writing a cronjob using a script
- php - Do we upgrade PHP or Drupal / Joomla! Core first?
- git - How do I delete every change to my local git repository?
- ffmpeg - 在级联视频上添加徽标
- karate - 有人可以为我提供一个 pom.xml 文件来设置 UI 测试的空手道框架吗?