求素数python函数 Python函数求素数

如何用Python的filter函数求素数

先写个函数判断是不是素数,再用filter求出列表里的素数

成都创新互联公司是一家专业提供松岭企业网站建设,专注与做网站、成都网站建设、成都h5网站建设、小程序制作等业务。10年已为松岭众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。

def isprime(n):

re = True

if n  2:

return False

for i in range(2,n-1):

if n%i == 0:

re = False

return re

re=filter(lambda x:isprime(x),[1,2,3,4,5,6,7])

print re

python求100-200间的素数

# 求100-200之间的所有素数

primes = []

for i in range(100,201):

for j in range(2,int(i**(1/2))+1):

if i % j == 0:

break

else:

primes += [i]

print(primes)

程序缩进如图所示

python中如何编程求1到100之间的素数

#!/usr/bin/python

#-*- coding:UTF-8 -*-

#求素数

list=[]

i=2

for i in range (2,100):

j=2

for j in range(2,i):

  if(i%j==0):

      break

else:

  list.append(i)

print(list)

扩展资料:

python:for语句的使用方法

for循环的语法格式:

for i in range(n):#从数据类型中拿一个值赋值给i

print(i)#打印i

例如:

#for

for i in range (1,6,2):#从一开始到六之前每隔上2个数字

print(i)#结果为1,3,5

# ------------------------------------------------

s = ["man", "woman", "girl", "boy", "sister"]

for i in s:#列表s中的每个元素给i

print(i)

#-------------------------------------------------

for i in range(5):

print(i)#结果为:0,1,2,3,4

for循环实例:数字0,1,2组成一个百位数,并且数字不重复!

#for

for i in range(0,3):

for j in range(0,3):

  for k in range(0,3):

      if (i != 0) and (i != j) and (i != k) and (j != k):

          print (i,j,k)

python求素数的个数

求素数本质上的算法还是:除了1和它本身之外的数都不能整除的数。

在网上看到了一种用一行就解决的代码:

" ".join("%s" % x for x in range(2,100) if not [y for y in range(2,x) if x%y == 0])

对这段代码分解,最后一段列表生成式[y for y in range(2,x) if x%y == 0]这个就是核心算法y是从2到x-1的数,x只要能对y整除,配上前面的if not,就是,x不能被2到x-1的数整除,再看前面一段,x for x in range(2,100) 其实就是让x从2到100的取值。我们这假设题目就是求100内的素数。其实代码到这就得出结果了,只要在这些代码外面加上[]就是一个列表生成式了:

[x for x in range(2,100) if not [y for y in range(2,x) if x%y == 0]]

那么为什么还加上了" ".join("%s" % 。。。)这段代码呢?其实只是格式化美观罢了,"%s" %是一种字符串格式化的语法, 基本用法是将值插入到%s占位符的字符串中,join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。

下面是结果:

'2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97'

这样解析出来是个字符串还不能分割,所以我重新改了一下:

a = (" ".join("%s" % x for x in range(2,100) if not [y for y in range(2,x) if x%y == 0])).split()

list1 = []

for item in (a):

list1.append(int(item))

print(list1)

split()把字符串解析成列表,然后给列表每一项都转化成数字。

在数学里,我们还有种判断素数的简化方法:即y的取值范围是2到x的平方根+1

import math

(" ".join("%s" % x for x in range(2,100) if not [y for y in range(2, int(math.sqrt(x))+1) if x%y == 0])).split()

下面是一种正常的算法:

import math

num = []

i = 2

for i in range(2,100):

j = 2;

for j in range(2,int(math.sqrt(i)+1)):

if (i%j==0):

break;

else:

num.append(i)

print(num)

python求质数的算法

为大家分享了多种方法求质数python实现代码,供大家参考,具体内容如下

题目要求是求所有小于n的质数的个数。

求质数方法1:

穷举法:

根据定义循环判断该数除以比他小的每个自然数(大于1),如果有能被他整除的就不是质数:

def countPrimes1(self, n):

"""

:type n: int

:rtype: int

"""

if n=2:

return 0

else:

res=[]

for i in range(2,n):

flag=0 # 质数标志,=0表示质数

for j in range(2,i):

if i%j ==0:

flag=1

if flag==0:

res.append(i)

return len(res)

求质数方法2:

利用定理:如果一个数是合数,那么它的最小质因数肯定小于等于它的平方根。所以判断一个数是否是质数,只需判断它是否能被小于它开根后的所有数整除。这样做的运算会少很多。

def countPrimes2(self, n):

if n=2:

return 0

else:

res=[]

for i in range(2, n):

flag=0

for j in range(2, int(math.sqrt(i))+1):

if i % j == 0:

flag = 1

if flag == 0:

res.append(i)

return len(res)

求质数方法3:

利用定理:如果一个数是合数,那么它的最小质因数肯定小于等于它的平方根。我们可以发现只要尝试小于等于平方根的所有数即可。列举从 3 到根号x的所有数,还是有些浪费。比如要判断101是否质数,101的根号取整后是10,需要尝试的数是1到10。但是可以发现,对9的尝试是多余的。不能被3整除,必然不能被9整除……顺着这个思路走下去,其实,只要尝试小于根号x的质数即可。而这些质数,恰好前面已经算出来了,已经存在res中了。

def countPrimes3(self, n):

if n = 2:

return 0

else:

res = []

for i in range(2, n):

flag = 0

for j in res:

if i % j == 0:

flag = 1

if flag == 0:

res.append(i)

return len(res)

希望对大家有帮助


新闻名称:求素数python函数 Python函数求素数
文章地址:http://pwwzsj.com/article/dosdsij.html