求素数的Python代码,求讲解 python求素数的个数

Python\u6c42100000\u4ee5\u4e3a\u7684\u8d28\u6570\u4ee3\u7801\u8be6\u89e3\uff1f

\u5b9a\u4e49\u53d8\u91cfk\u4e3a0\uff0c\u8fd9\u91cc\u6ca1\u6709\u7528\u5904\uff0c\u56e0\u4e3a\u4f60\u4e0b\u9762\u6bcf\u6b21\u904d\u5386\u90fd\u91cd\u65b0\u8d4b\u503c\u4e3a0

\u5b9a\u4e49\u4e00\u4e2a\u5217\u8868\uff0c\u5b58\u50a8\u4e86\u7b2c\u4e00\u4e2a\u8d28\u65702\uff0c\u56e0\u4e3a\u4ed6\u662f\u552f\u4e00\u4e00\u4e2a\u5076\u6570\uff0c\u6240\u4ee5\u5355\u72ec\u5b58\u8fdb\u53bb

\u904d\u5386[3,100000)\u7684\u6240\u6709\u6574\u6570\uff0c\u53d6\u51fa\u6bcf\u4e00\u4e2a\u6570\u5b57\u4e4b\u540e\uff0c\u5206\u522b\u9664\u4ee5\u5217\u8868\u4e2d\u7684\u6570\u5b57\uff0c\u5982\u679c\u67d0\u4e00\u4e2a\u80fd\u88ab\u9664\u5c3d\uff0c\u5219\u4ee3\u8868\u5b83\u4e0d\u662f\u8d28\u6570\uff08\u6839\u636e\u4efb\u4f55\u5408\u6570\u90fd\u80fd\u88ab\u8d28\u6570\u9664\u5c3d\u7684\u89c4\u5219\uff09\uff0cbreak\u8df3\u51fa\u91cc\u9762\u7684\u5faa\u73af\u3002

\u5224\u65ad\u7ed3\u679c\uff0c\u5982\u679c\u662f\u8d28\u6570\u5219\u52a0\u5165\u5217\u8868\uff0c\u5426\u5219\u4e0d\u505a\u4ec0\u4e48\u4e8b\u60c5\u3002

\u6700\u540e\u8f93\u51fa\u8fd9\u4e2a\u7531\u8d28\u6570\u7ec4\u6210\u7684\u5217\u8868\u3002

\u6c42\u7d20\u6570\u672c\u8d28\u4e0a\u7684\u7b97\u6cd5\u8fd8\u662f\uff1a\u9664\u4e861\u548c\u5b83\u672c\u8eab\u4e4b\u5916\u7684\u6570\u90fd\u4e0d\u80fd\u6574\u9664\u7684\u6570\u3002

\u5728\u7f51\u4e0a\u770b\u5230\u4e86\u4e00\u79cd\u7528\u4e00\u884c\u5c31\u89e3\u51b3\u7684\u4ee3\u7801\uff1a

" ".join("%s" % x for x in range(2,100) if not [y for y in range(2,x) if x%y == 0])
\u5bf9\u8fd9\u6bb5\u4ee3\u7801\u5206\u89e3\uff0c\u6700\u540e\u4e00\u6bb5\u5217\u8868\u751f\u6210\u5f0f[y for y in range(2,x) if x%y == 0]\u8fd9\u4e2a\u5c31\u662f\u6838\u5fc3\u7b97\u6cd5y\u662f\u4ece2\u5230x-1\u7684\u6570\uff0cx\u53ea\u8981\u80fd\u5bf9y\u6574\u9664\uff0c\u914d\u4e0a\u524d\u9762\u7684if not\uff0c\u5c31\u662f\uff0cx\u4e0d\u80fd\u88ab2\u5230x-1\u7684\u6570\u6574\u9664\uff0c\u518d\u770b\u524d\u9762\u4e00\u6bb5\uff0cx for x in range(2,100) \u5176\u5b9e\u5c31\u662f\u8ba9x\u4ece2\u5230100\u7684\u53d6\u503c\u3002\u6211\u4eec\u8fd9\u5047\u8bbe\u9898\u76ee\u5c31\u662f\u6c42100\u5185\u7684\u7d20\u6570\u3002\u5176\u5b9e\u4ee3\u7801\u5230\u8fd9\u5c31\u5f97\u51fa\u7ed3\u679c\u4e86\uff0c\u53ea\u8981\u5728\u8fd9\u4e9b\u4ee3\u7801\u5916\u9762\u52a0\u4e0a[]\u5c31\u662f\u4e00\u4e2a\u5217\u8868\u751f\u6210\u5f0f\u4e86\uff1a

[x for x in range(2,100) if not [y for y in range(2,x) if x%y == 0]]
\u90a3\u4e48\u4e3a\u4ec0\u4e48\u8fd8\u52a0\u4e0a\u4e86" ".join("%s" % \u3002\u3002\u3002)\u8fd9\u6bb5\u4ee3\u7801\u5462\uff1f\u5176\u5b9e\u53ea\u662f\u683c\u5f0f\u5316\u7f8e\u89c2\u7f62\u4e86\uff0c"%s" %\u662f\u4e00\u79cd\u5b57\u7b26\u4e32\u683c\u5f0f\u5316\u7684\u8bed\u6cd5\uff0c \u57fa\u672c\u7528\u6cd5\u662f\u5c06\u503c\u63d2\u5165\u5230%s\u5360\u4f4d\u7b26\u7684\u5b57\u7b26\u4e32\u4e2d\uff0cjoin() \u65b9\u6cd5\u7528\u4e8e\u5c06\u5e8f\u5217\u4e2d\u7684\u5143\u7d20\u4ee5\u6307\u5b9a\u7684\u5b57\u7b26\u8fde\u63a5\u751f\u6210\u4e00\u4e2a\u65b0\u7684\u5b57\u7b26\u4e32\u3002
\u4e0b\u9762\u662f\u7ed3\u679c\uff1a

'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'
\u8fd9\u6837\u89e3\u6790\u51fa\u6765\u662f\u4e2a\u5b57\u7b26\u4e32\u8fd8\u4e0d\u80fd\u5206\u5272\uff0c\u6240\u4ee5\u6211\u91cd\u65b0\u6539\u4e86\u4e00\u4e0b\uff1a

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()\u628a\u5b57\u7b26\u4e32\u89e3\u6790\u6210\u5217\u8868\uff0c\u7136\u540e\u7ed9\u5217\u8868\u6bcf\u4e00\u9879\u90fd\u8f6c\u5316\u6210\u6570\u5b57\u3002
\u5728\u6570\u5b66\u91cc\uff0c\u6211\u4eec\u8fd8\u6709\u79cd\u5224\u65ad\u7d20\u6570\u7684\u7b80\u5316\u65b9\u6cd5:\u5373y\u7684\u53d6\u503c\u8303\u56f4\u662f2\u5230x\u7684\u5e73\u65b9\u6839+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()
\u4e0b\u9762\u662f\u4e00\u79cd\u6b63\u5e38\u7684\u7b97\u6cd5\uff1a
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)

这样写不知道你能不能理解?

这是等效代码:

L1 = []
for x in range(1, 100):
list = []
for y in range(2, x/2 + 1):
if x % y == 0:
list.append(y)
if not list:
L1.append(x)
print L1

对于空列表,not [] 返回True

原来的代码中, if not后面是一个临时生成的列表, 如果这个列表为空则表明x没有任何>=2的因子,x必是素数,于是添加x 到主列表.

[x for x in range(1, 100) if express ]
这样的语句仅仅在express是True才会添加x

拆分一下啊。
首先是x取值1-99
然后对后面的语句进行判断,如果是False就输出L1,即对应的x值。
后面的语句可以理解为:y取值(2,x/2+1),在这里面遍历。
如果对任一个y有x % y == 0那么返回值为1,就被if not 否掉了。这一步就是判断素质数。
输出的应该是质数而不是素数吧?

if pow(a,n-1,n)!=1: return False return True 测10023 isPrime2(10023,5) 你可以百度一下“筛法求素数”。 有个希腊的数学家的一个,WnpFwY

对所有的y在2到x/2+1之间,y都不是x的因子,那么x就是一个质数。

  • python绱犳暟鎬庝箞姹
    绛旓細1銆佺ず渚浠g爜 import math def isPreme(smk):i = 2 for i in range(2, smk):j = 2 for j in range(2, int(math.sqrt(i)+1)):if (i % j == 0):break else:print('%s鏄绱犳暟' % i)isPreme(20)2銆佺ず渚嬬粨鏋 2鏄礌鏁 3鏄礌鏁 5鏄礌鏁 7鏄礌鏁 11鏄礌鏁 13鏄...
  • python涓庝箞鍒ゆ柇绱犳暟
    绛旓細浠g爜濡備笅锛!/usr/bin/python -*- coding: UTF-8 -*- b = 0 for a in range(101,201):k = 0 for i in range(2,a):if a % i == 0 :k += 1 if k == 0 :print a b +=1 print "绱犳暟涓鍏辨湁",b,"涓"
  • Python姹傜礌鏁闂瀹氫箟issus鍑芥暟
    绛旓細1銆浠g爜涓厛瀹氫箟浜嗕竴涓垽鏂绱犳暟鐨鍑芥暟is_prime()锛岀劧鍚庤緭鍏ュ尯闂寸殑璧风偣鍜岀粓鐐癸紝鏈鍚庨亶鍘嗗尯闂翠腑鐨勬墍鏈夋暟骞跺垽鏂槸鍚︿负绱犳暟锛岃緭鍑虹礌鏁板嵆鍙2銆乸rint(\n鍏辫%d涓礌鏁般%count)绋嬪簭涓鍏堝畾涔変簡涓涓悕涓篿sPrime鐨勫嚱鏁帮紝鐢ㄤ簬鍒ゆ柇涓涓暟鏄惁涓虹礌鏁般3銆佽川鏁板張绉扮礌鏁帮紝鏈夋棤闄愪釜銆傝川鏁板畾涔変负鍦ㄥぇ浜1鐨勮嚜鐒舵暟涓...
  • python姹傜礌鏁
    绛旓細python姹傜礌鏁濡備笅锛Python鐢辫嵎鍏版暟瀛﹀拰璁$畻鏈虹瀛︾爺绌跺浼氱殑鍚夊路鑼冪綏鑻忓浜1990骞翠唬鍒濊璁★紝浣滀负涓闂ㄥ彨鍋欰BC璇█鐨勬浛浠e搧銆侾ython鎻愪緵浜嗛珮鏁堢殑楂樼骇鏁版嵁缁撴瀯锛岃繕鑳界畝鍗曟湁鏁堝湴闈㈠悜瀵硅薄缂栫▼銆侾ython璇硶鍜屽姩鎬佺被鍨嬶紝浠ュ強瑙i噴鍨嬭瑷鐨勬湰璐ㄣ備娇瀹冩垚涓哄鏁板钩鍙颁笂鍐欒剼鏈拰蹇熷紑鍙戝簲鐢ㄧ殑缂栫▼璇█锛岄殢鐫鐗堟湰鐨勪笉鏂洿鏂...
  • python鍒ゆ柇绱犳暟鏄粈涔?
    绛旓細鍒ゆ柇鏄惁涓绱犳暟鐨鏂规硶锛1銆佸埄鐢╢or寰幆鍜宐reak璇彞锛屼唬鐮涓恒恌or i in range(2, k+2):if m % i == 0:break銆戙2銆佸埄鐢╳hile寰幆鍜宐ool鍙橀噺銆python浣跨敤鎶宸 濡傛灉鍦ㄥ紓甯稿鐞嗙▼搴忔垨 finally 鍧椾腑寮曞彂寮傚父锛岄粯璁ゆ儏鍐典笅锛屽紓甯告満鍒朵細闅愬紡宸ヤ綔浼氬皢鍏堝墠鐨勫紓甯搁檮鍔犱负鏂板紓甯哥殑 __context__ 灞炴с傝繖灏...
  • 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姹1鑷100鍐呮墍鏈绱犳暟骞剁粺璁′釜鏁
    绛旓細!/usr/bin/python -*- coding: UTF-8 -*- b = 0 for a in range(1,100):k = 0 for i in range(2,a):if a % i == 0 :k += 1 if k == 0 :print a b +=1 print "绱犳暟涓鍏辨湁",b,"涓"绱犳暟锛氫竴涓暟鍙兘琚1 鍜屽畠鏈韩鏁撮櫎锛屽垯璇ユ暟鍗充负绱犳暟 ...
  • 鐢Python瀹炵幇瀵绘壘100浠ュ唴鐨璐ㄦ暟銆浠g爜鐪嬩笉鎳,姹瑙i噴!
    绛旓細while(i<=k):銆#浠2鍒発娴嬭瘯鏄惁涓簀鐨勫洜瀛 if j%i==0:銆#濡傛灉i鏄痡鐨勫洜鏁帮紝閫鍑哄惊鐜 break i=i+1 if(i>k):#濡傛灉娌℃湁涓旈鍑哄惊鐜紝鍒檌=i+1涓鐩存墽琛屽埌i<=k涓嶆垚绔嬩负姝紝j娌℃湁鍥犳暟锛屾槸绱犳暟鎵撳嵃涔 print(j) j=j+1 ...
  • 鐢Python杈撳嚭2000鍒999999涔嬮棿鎵浠ョ殑璐ㄦ暟?
    绛旓細2銆佽川鏁板張绉扮礌鏁般傛寚鍦ㄤ竴涓ぇ浜1鐨勮嚜鐒舵暟涓紝闄や簡1鍜屾鏁存暟鑷韩澶栵紝涓嶈兘琚叾浠栬嚜鐒舵暟鏁撮櫎鐨勬暟銆備竴鑸甯镐汉鐨勮В娉曟槸涓ゆ寰幆锛屽亣璁炬眰灏忎簬N鐨勬墍鏈夌礌鏁般備竴娆$敤N-1涔嬮棿鐨勬墍鏈夋暟鍘婚櫎锛屽鏋滆兘琚暣闄よ繖涓暟鑲畾涓嶆槸绱犳暟銆3銆佷负澶у鍒嗕韩浜嗗绉嶆柟娉姹傝川鏁皃ython瀹炵幇浠g爜锛渚涘ぇ瀹跺弬鑰冿紝鍏蜂綋鍐呭濡備笅棰樼洰瑕佹眰鏄...
  • 扩展阅读:python判断素数代码 ... 水仙花数python代码 ... python求最大素数的代码 ... python判断奇偶数 ... python代码大全 ... 1-100素数求和代码python ... python列出1-100素数 ... 1到100的素数python代码 ... python求素数流程图 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网