python - 优化性能 - 写出质数
问题描述
问题是质数——解决方案没有得到有效实施。
我听说过埃拉托色尼筛。
以更有效的方式实现素数的其他方法是什么?
n = int(input())
suma = 0
m = 0
while m < n:
if n > 100000:
break
x = int(input())
if 1 < x < 10000:
for i in range(x):
if x % (i + 1) == 0:
suma += 1
if suma == 2 and x != 2:
m += 1
print('o')
suma = 0
else:
m += 1
print('x')
suma = 0
解决方案
您正在使用一种非常幼稚的方法进行素数检查。
作为一种一般的天真但不是那么多的方法,我建议使用威尔逊定理作为质数检查器。使用math.factorial
而不是 python 循环应该可以为您提供一些合理的速度提升,同时保持代码相当简单。
推荐阅读
- mysql - ServiceStack.OrmLite:实现自定义 StringConverter 会影响复杂 BLOB 字段的列类型
- xml - 使用 XSL 转换将 XML 导入 Access
- html - 修复了带有滚动条的表格上的列和标题
- javascript - Mongoose .stream 没有填充字段
- java - 如何在运行时在流口水中插入事实以在规则之间共享?
- php - Symfony 4 FOSUserBundle 错误太多重定向
- excel - 如何根据Excel表格中的上一个日期选择数据?
- javascript - 从主类获取子类长度
- php - Ajax,从函数内检索插入的 ID
- python - 在 Python 3 中打开 URL 或本地文件