发布时间:2025-12-11 02:22:45 浏览次数:2
python质数判断的方法:首先运用python的数学函数;然后单行程序扫描素数,代码为【[ p for p in range(2, N) if 0 not in [ p% d for d in range(2,int(sqrt(p)】。
python质数判断的方法:
1、运用python的数学函数
importmathdefisPrime(n):ifn<=1:returnFalseforiinrange(2,int(math.sqrt(n))+1):ifn%i==0:returnFalsereturnTrue
2、单行程序扫描素数
frommathimportsqrtN=100[pforpinrange(2,N)if0notin[p%dfordinrange(2,int(sqrt(p))+1)]]
运用python的itertools模块
fromitertoolsimportcountdefisPrime(n):www.jb51.netifn<=1:returnFalseforiincount(2):ifi*i>n:returnTrueifn%i==0:returnFalse
3、不使用模块的两种方法
方法1:
defisPrime(n):ifn<=1:returnFalsei=2whilei*i<=n:ifn%i==0:returnFalsei+=1returnTrue
方法2:
defisPrime(n):ifn<=1:returnFalseifn==2:returnTrueifn%2==0:returnFalsei=3whilei*i<=n:ifn%i==0:returnFalsei+=2returnTrue
eg:求出20001到40001之间的质数(素数)
既然只能被1或者自己整出,那说明只有2次余数为0的时候,代码如下:
#!/usr/bin/pythonL1=[]forxinxrange(20001,40001):n=0foryinxrange(1,x+1):ifx%y==0:n=n+1ifn==2:printxL1.append(x)printL1
结果如下:
2001120021200232002920047200512006320071200892010120107201132011720123201292014320147201492016120173….