程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python求指定范圍內質數與合數-詳解

編輯:Python

目錄

1)簡介

2)程序實現代碼-1- for循環

3)程序實現代碼[2] 列表表達式

列表表達式:

-----------------------正文---------------


1)簡介

質數,即除1和它本身外沒有其他因數的數,又稱素數。

合數,即除1和它本身外有其他因數的數。

---注意:1既不是質數有不是合數!

2)程序實現代碼-1- for循環

打包一個函數:

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

------------------------------------------初學者分割線---------------------------------------------------------------

高端玩法來了!||ヽ(* ̄▽ ̄*)ノミ|Ю閃亮登場

3)程序實現代碼[2] 列表表達式

列表表達式:

越重要,越前置。

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]]

----------------完-----------------


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved