尤拉計畫(project euler)。
記d(n)為n 的所有真因子(小於 n 且能整除 n 的整數)之和。 如果 d(a) = b 並且 d(b) = a, 且 a ≠ b, 那麼 a 和 b 就是乙個親和數對(amicable pair),並且 a 和 b 都叫做親和數(amicable number)。
例如220的真因子是 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 和 110; 因此 d(220) = 284. 284的真因子是1, 2, 4, 71 和142; 所以d(284) = 220.
計算10000以下所有親和數之和。
分析:反正這不難
def
d(n)
:return
sum(i for i in
range(1
,n//2+
1)if n%i ==0)
ans =
0for a in
range(2
,10000):
b=d(a)
if a!=b and a==d(b)
: ans += a
print
(ans)
輸出:
31626
檔案names.txt (右鍵另存為)是乙個46k大小的文字檔案,包含5000多個英文名字。利用這個檔案,首先將檔案中的名字按照字母排序,然後計算每個名字的字母值,最後將字母值與這個名字在名字列表中的位置相乘,得到這個名字的得分。
例如將名字列表按照字母排序後, colin這個名字是列表中的第938個,它的字母值是3 + 15 + 12 + 9 + 14 = 53。所以colin這個名字的得分就是938 × 53 = 49714.
檔案中所有名字的得分總和是多少?
def
name_value
(name)
:return
sum(
ord(c)
-ord
('a')+
1for c in name)
f =open
("names.txt"
)lst = f.readline(
).split(
",")
lst.sort(
)score =
0for i, s in
enumerate
(lst)
: s = s.replace(
'"','')
score += name_value(s)
*(i +1)
print
(score)
f.close(
)
輸出: 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 萬以下有多少個迴圈質數?將引數的個位數字調整至最前面...
Python程式設計之尤拉計畫37 38
尤拉計畫 project euler 3797 這個數很有趣。它本身是質數,而且如果我們從左邊不斷地裁去數字,得到的仍然都是質數 3797,797,97,7。而且我們還可以從右向左裁剪 3797,379,37,3,得到的仍然都是質數。找出全部 11 個這樣從左向右和從右向左都可以裁剪的質數。注意 2...