目錄
1)簡介
2)程序實現代碼-1- for循環
3)程序實現代碼[2] 列表表達式
列表表達式:
-----------------------正文---------------
質數,即除1和它本身外沒有其他因數的數,又稱素數。
合數,即除1和它本身外有其他因數的數。
---注意:1既不是質數有不是合數!
打包一個函數:
def primenum(start,end):
start為起始,end為結束
函數主體
def primenum(start,end):
prime=[]
for i in range(start,end+1):
for j in range(2,i):#不包含1,它本身
if i%j==0:
break
else:#注意else加在for後面
prime.append(i)
return prime
輸出效果還行,但是有0和1...
添加過濾效果
def primenum(start,end):
prime=[]
if start<2:start=2
for i in range(start,end+1):
for j in range(2,i):#不包含1,它本身
if i%j==0:
break
else:#注意else加在for後面
prime.append(i)
return prime
print(primenum(0,100))
結果:
[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]
合數就好辦了,把所有除0,1以外的數算算就好
def hs(start,end):
num=[]
if start<2:start=2
for i in range(start,end+1):
for j in range(2,i):
if i%j==0:
num.append(i)
break
return num
------------------------------------------初學者分割線---------------------------------------------------------------
高端玩法來了!||ヽ(* ̄▽ ̄*)ノミ|Ю閃亮登場
越重要,越前置。
a=[i for i in range(1,10)]
print(a)
>>>[1,2,3,4,5,6,7,8,9]
[使用for循環把每一次i的值套入]
a=[i for i in range(1,10) if i%2==0]
print(a)
>>>[2,4,6,8]
升-級-了!
if放在了for後面,表示每一次i出現還要過if審查才予以復制,否則不算數
a=[i**2 for i in range(1,5)]
print(a)
>>>[1,4,9,16]
將i做了更多操作
a=[j for j in range(i) for i in range(10)]
print(a)
報錯,首先的循環前置
a=[j for i in range(10) for j in range(i)]
print(a)
>>>[0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8]
嵌套循環
合數求法:
list
a=[]
加入表達式一號(本處使用3~100)
a=[i for i in range(3,100+1)]
進行嵌套,求因數
a=[j for i in range(3,100+1) for j in range(2,i)]
判斷是否整除
a=[j for i in range(3,100+1) for j in range(2,i) if i%j==0]
注意:i才是真正的值!
a=[i for i in range(3,100+1) for j in range(2,i) if i%j==0]
接下來要濾除重復值:
a=list(set([i for i in range(3,100+1) for j in range(2,i) if i%j==0]))
好了OK
接下來是質數——但是判斷就簡單多了,我直接上代碼
value = [i for i in range(1 if 1 >= 2 else 2, 100 + 1) if i not in a]
有人想要一行求質數而非一行求合數,一行求質數:
one=[i for i in range(1 if 1 >= 2 else 2, 100 + 1) if i not in [i for i in range(1,100+1) for j in range(2, i) if i % j == 0]]
----------------完-----------------