栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python素数检查器[重复]

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python素数检查器[重复]

一旦知道数字不是素数,就需要停止迭代。

break
一旦找到质数就添加一个,退出while循环。

只需对代码进行最少的更改即可使其工作:

a=2num=13while num > a :  if num%a==0 & a!=num:    print('not prime')    break  i += 1else: # loop not exited via break  print('prime')

您的算法等效于:

for a in range(a, num):    if a % num == 0:        print('not prime')        breakelse: # loop not exited via break    print('prime')

如果将其放入函数中,则可以免除

break
for-else:

def is_prime(n):    for i in range(3, n):        if n % i == 0: return False    return True

即使您要像这样强力求素,也只需要迭代到的平方根即可

n
。另外,您可以跳过测试两个之后的偶数。

这些建议如下:

import mathdef is_prime(n):    if n % 2 == 0 and n > 2:         return False    for i in range(3, int(math.sqrt(n)) + 1, 2):        if n % i == 0: return False    return True

请注意,此代码不能正确处理

0
1
和负数。

我们通过

all
与生成器表达式一起使用来替换for循环,从而使此过程更简单。

import mathdef is_prime(n):    if n % 2 == 0 and n > 2:         return False    return all(n % i for i in range(3, int(math.sqrt(n)) + 1, 2))


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/612036.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号