尤拉計畫(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 萬以下有多少個迴圈質數?將引數的個位數字調整至最前面...