目前分類:python 寫題筆記 (5)

瀏覽方式: 標題列表 簡短摘要

一.排列

from itertools import permutations
print(list(permutations("ABCD",2)))
#[('A', 'B'), ('A', 'C'), ('A', 'D'),('B', 'A'), ('B', 'C'), ('B', 'D'), ('C', 'A'), ('C', 'B'),('C', 'D'), ('D', 'A'), ('D', 'B'), ('D', 'C')]

二.組合

文章標籤

趴趴熊日常 發表在 痞客邦 留言(0) 人氣()

一.建立質數表

#假設我們要建立1-100的質數,1為質數,0為合數

max=100#1.建立一個長度為100支陣列
f=[0,1]*(max//2+1)
#這裡f list的第一個數字為第0位,他是偶數,第二個數字為第一位,他是奇數
#f陣列他會遵循著[偶數,奇數...]到你要的長度

f[0]=0;f[1]=0;f[2]=1;f[3]=1#數字中,0為合數,1為合數,2為質數,3為質數,這裡手動輸入,後面就會按照[0,1]的樣式了

h=int(max**0.5)#接下來每一個數字去看他是否有因數,在因數的檢測中,只要檢測到他的中間就好,因為後面就是顛倒而已
for i in range(3,h+1,2):#從數字3開始檢查因數,檢查到中間因數就好,偶數不用檢查,所以2個2個跳
    if(f[i]==1):
        #這裡是說如果我找到的數為質數,將它後面的倍數都修為0
        #eg:f[i]==3時,3是質數為1,那後面的6,9,12,15,18...為0
        for j in range(i*i,max+1,i*2):
            f[j]=0
        
#這裡分三個部份說:
#1.起點為i*i:
#    假設i=5,那5*1=5為質數為1(不是我要的),
#                5*2=10為偶數為0(不是我要的),
#                5*3=15在i=3*5時就會被處理完了,不需再處理
#                5*4=20為偶數為0(不是我要的),
#                5*5=25這裡還沒處理,從這裡開始
#2.終點為max+1,就是到尾吧
#3.中間為i*2
#    如果是i的話,i(奇數)*i(奇數)+i(奇數)會為偶數,不是我要的
#    如果是*2的話,i(奇數)*i(奇數)+2*i(偶數)這樣才對
但在這題中會造成記憶體空間超過



完整碼
max=1000
f=[0,1]*(max//2+1)
f[0]=0;f[1]=1;f[2]=1;f[3]=1
h=int(max**0.5)
for i in range(3,h+1,2):
    if(f[i]==1):
        for j in range(i*i,max+1,i*2):
            f[j]=0
sim=[]
for i in range(1000):
    if f[i]==1:
        sim.append(i)
print(sim)

二.判斷質因數優化方式

趴趴熊日常 發表在 痞客邦 留言(0) 人氣()

image

image

文章標籤

趴趴熊日常 發表在 痞客邦 留言(0) 人氣()

索引 index

利用編號做搜尋紀錄

文章標籤

趴趴熊日常 發表在 痞客邦 留言(0) 人氣()

轉義符號

"\n" 換行

文章標籤

趴趴熊日常 發表在 痞客邦 留言(0) 人氣()

Close

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼