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

2021-09-21 01:38:07 字數 2220 閱讀 3041

尤拉計畫(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…,它的迴圈節長度為1.我們看到,1/7有長為6的迴圈節.

在小於1000的數中,求出使1/d的小數表示擁有最長迴圈節的d值.

分析:

先把乙個數把質因子中的2和5除去後,得到的數和原來的數,兩者的倒數迴圈節長度相同。如何計算乙個數的迴圈節長度:計算它能被多少長度的9整除就行了,6能被1位的9整除,所以它的迴圈節長度是1,7能被6位的999999整除,所以它的迴圈節長度是6

# 返回n的迴圈節長度

deflength

(n):

i=1while n %2==

0:n =n //

2while n %5==

0:n =n //

5while

true:if

(10**i -1)

% n ==0:

return i

else

: i+=

1num,l_max =7,

6for n in

range(2

,1000):

if l_max < length(n)

: num,l_max = n,length(n)

print

(f"對應的迴圈節長度為"

)

輸出:

983對應的迴圈節長度為982

尤拉發現了二次式 n2+

n+

41n^2+n+41

n2+n+4

1,當n取0-39這40個連續整數時,都得到質數。當n取40和41時,表示式的值不再是質數。對另乙個二次式 n2−

79n

+1601

n^2-79n+1601

n2−79n

+160

1,當n取0-79這80個連續整數時,得到80個質數。兩個係數-79和1601的乘積是-126479.

考慮 n2+

an+b

n^2+an+b

n2+an+

b形式的二次式,其中|a|和|b|均不超過1000.找出係數a和b的乘積,使得n從0連續取值時,該二次式可以產生最多個質數,找出該公式的係數乘積

分析:

題目要求n從0開始連續產生質數,那麼b是乙個質數,b+1是乙個偶數。

n=1;1+a+b,顯然|a|一定是乙個奇數

# 判斷n是否質數

defisprime

(n):

if n ==2:

return

true

elif n <

2or n%2==

0:return

false

for i in

range(3

,int

(n **

0.5)+1

,2):

if n % i ==0:

return

false

return

true

# 返回公式產生的連續質數個數

deffind_n

(a,b)

: n=

0while isprime(n*n+a*n+b)

:n+=

1return n

am,bm,num=0,

0,0for b in

range(3

,1000):

if isprime(b)

:for a in

range(-

999,

1000,2

):tmp=find_n(a,b)

if tmp>num:

am,bm,num=a,b,tmp

print

(f"*="

)

輸出:

-61*971=-59231

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程式設計之尤拉計畫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...