Python程式設計之尤拉計畫37 38

2021-09-21 13:48:39 字數 2620 閱讀 2052

尤拉計畫(project euler)。

3797 這個數很有趣。它本身是質數,而且如果我們從左邊不斷地裁去數字,得到的仍然都是質數:3797, 797, 97, 7。而且我們還可以從右向左裁剪:3797, 379, 37, 3,得到的仍然都是質數。

找出全部 11 個這樣從左向右和從右向左都可以裁剪的質數。

注意:2, 3, 5 和 7 不被認為是可裁剪的質數。

# 質數表

n =1000000

primes =

[true

]* n

primes[0]

= primes[1]

=false

primes[

4: n:2]

=[false]*

len(primes[

4: n:2]

)for i in

range(3

,int

(n **

0.5)+1

,2):

if primes[i]

: primes[i * i: n: i]=[

false]*

len(primes[i * i: n: i]

)# 生成右裁剪序列

defrtrim

(m):

m //=

10while m:

yield m

m //=

10# 生成左裁剪序列

defltrim

(m):

m = m %

10**

(len

(str

(m))-1

)while m:

yield m

m = m %

10**

(len

(str

(m))-1

)ans =

for i in

range(11

, n,2)

:if primes[i]

: allisprime =

true

for x in ltrim(i):if

not primes[x]

: allisprime =

false

for x in rtrim(i):if

not primes[x]

: allisprime =

false

if allisprime:

print

(f'符合要求的數是,和為'

)

輸出:

符合要求的數是[23, 37, 53, 73, 313, 317, 373, 797, 3137, 3797, 739397],和為748317

將 192 與 1, 2, 3 分別相乘得到:

192 × 1 = 192

192 × 2 = 384

192 × 3 = 576

將這三個乘積連線起來我們得到乙個 1 到 9 的全數字, 192384576。我們稱 192384576 是 192 和 (1,2,3) 的連線積。

通過將 9 與 1, 2, 3, 4 和 5 相乘也可以得到 1 到 9 的 全數字:918273645,這個數是 9 和 (1,2,3,4,5) 的連線積。

用乙個整數與 1,2, … , n(n 大於 1)的連線積構造而成的 1 到 9 全數字數中最大的是多少?

for i in

range(1

,9877):

tmp =

''for t in

range(1

,10):

tmp +=

str(i * t)

iflen

(tmp)==9

:ifnot'123456789'

.strip(tmp)

:print

(tmp,i,

[k for k in

range(1

, t +1)

])break

輸出:

123456789 1 [1, 2, 3, 4, 5, 6, 7, 8, 9]

918273645 9 [1, 2, 3, 4, 5]

192384576 192 [1, 2, 3]

219438657 219 [1, 2, 3]

273546819 273 [1, 2, 3]

327654981 327 [1, 2, 3]

672913458 6729 [1, 2]

679213584 6792 [1, 2]

692713854 6927 [1, 2]

726914538 7269 [1, 2]

729314586 7293 [1, 2]

732914658 7329 [1, 2]

769215384 7692 [1, 2]

792315846 7923 [1, 2]

793215864 7932 [1, 2]

926718534 9267 [1, 2]

927318546 9273 [1, 2]

932718654 9327 [1, 2]

Python程式設計之尤拉計畫21 22

尤拉計畫 project euler 記d n 為n 的所有真因子 小於 n 且能整除 n 的整數 之和。如果 d a b 並且 d b a,且 a b,那麼 a 和 b 就是乙個親和數對 amicable pair 並且 a 和 b 都叫做親和數 amicable number 例如220的真因子...

Python程式設計之尤拉計畫26 27

尤拉計畫 project euler 單位分數是指分子為1的分數.分母為2 10的單位分數的小數表示如下 單位分數 小數1 2 0.51 3 0.3 1 40.25 1 50.2 1 60.1 6 1 70.142857 1 80.125 1 90.1 1 10 0.10.1 6 表示0.1666 ...

Python程式設計之尤拉計畫35 36

尤拉計畫 project euler 我們稱 197 為乙個迴圈質數,因為它的所有輪轉形式 197,971 和 719 都是質數。100 以下有 13 個這樣的質數 2,3,5,7,11,13,17,31,37,71,73,79,和 97.100 萬以下有多少個迴圈質數?將引數的個位數字調整至最前面...