欧拉计划(python) problem 64

Odd period square roots

Problem 64

All square roots are periodic when written as continued fractions and can be written in the form:

N = a0 +
1
  a1 +
1
    a2 +
1
      a3 + ...

For example, let us consider √23:

√23 = 4 + √23 — 4 = 4 + 
1
 = 4 + 
1
 
1

√23—4

  1 + 
√23 – 3

7

If we continue we would get the following expansion:

√23 = 4 +
1
  1 +
1
    3 +
1
      1 +
1
        8 + ...

The process can be summarised as follows:

a0 = 4,  
1

√23—4

 = 
√23+4

7

 = 1 + 
√23—3

7

a1 = 1,  
7

√23—3

 = 
7(√23+3)

14

 = 3 + 
√23—3

2

a2 = 3,  
2

√23—3

 = 
2(√23+3)

14

 = 1 + 
√23—4

7

a3 = 1,  
7

√23—4

 = 
7(√23+4)

7

 = 8 +  √23—4
a4 = 8,  
1

√23—4

 = 
√23+4

7

 = 1 + 
√23—3

7

a5 = 1,  
7

√23—3

 = 
7(√23+3)

14

 = 3 + 
√23—3

2

a6 = 3,  
2

√23—3

 = 
2(√23+3)

14

 = 1 + 
√23—4

7

a7 = 1,  
7

√23—4

 = 
7(√23+4)

7

 = 8 +  √23—4

It can be seen that the sequence is repeating. For conciseness, we use the notation √23 = [4;(1,3,1,8)], to indicate that the block (1,3,1,8) repeats indefinitely.

The first ten continued fraction representations of (irrational) square roots are:

√2=[1;(2)], period=1

√3=[1;(1,2)], period=2

√5=[2;(4)], period=1

√6=[2;(2,4)], period=2

√7=[2;(1,1,1,4)], period=4

√8=[2;(1,4)], period=2

√10=[3;(6)], period=1

√11=[3;(3,6)], period=2

√12= [3;(2,6)], period=2

√13=[3;(1,1,1,1,6)], period=5

Exactly four continued fractions, for N ≤ 13, have an odd period.

How many continued fractions for N ≤ 10000 have an odd period?


Answer:
1322
Completed on Sun, 1 Feb 2015, 06:17

Go to the thread for problem 64 in the forum.

Python code :

import math

sqrt=math.sqrt

def func(x):

index=0

b=[0.0,0.0]

c=[0.0]

intcoeff={}

fractioncoeff={}

a=int(sqrt(x))

if sqrt(x)-a==0:

return 0

b[0]=1.0

b[1]=-a*1.0

c=1.0

index+=1

intcoeff[index]=a

tempstr=str(b[0])+‘_‘+str(b[1])+‘_‘+str(c)

fractioncoeff[tempstr]=index

while 1:

result=rationalization(b,c,x)

a=result[‘a‘]

b=result[‘b‘]

c=result[‘c‘]

tempstr=str(b[0])+‘_‘+str(b[1])+‘_‘+str(c)

k=fractioncoeff.get(tempstr)

if k==None:

index+=1

intcoeff[index]=a

fractioncoeff[tempstr]=index

else:

return index-k+1

# 分母包含无理数,分子是有理数

def rationalization(b,c,x):

result={}

tc=b[0]*b[0]*x-b[1]*b[1]

b[0]=int(b[0]*c)

b[1]=int(-b[1]*c)

a=int((b[0]*sqrt(x)+b[1])/tc)

b[1]-=int(a*tc)

k=gcd(gcd(b[0],abs(b[1])),tc)

b[0]/=k

b[1]/=k

tc/=k

result[‘a‘]=a

result[‘b‘]=b

result[‘c‘]=tc

return result

#求最大公约数

def gcd(m,n):

k=min(m,n)

for i in range(k,0,-1):

if m%i==0 and n%i==0:

return i

N=10000

count=0

for i in range(2,N+1):

k=int(func(i))

if k%2==1:

count+=1

print(count)

time: 3s

时间: 2024-10-26 03:57:07

欧拉计划(python) problem 64的相关文章

欧拉计划(python) problem 29

Distinct powers Problem 29 Consider all integer combinations of ab for 2 ≤ a ≤ 5 and 2 ≤ b ≤ 5: 22=4, 23=8, 24=16, 25=32 32=9, 33=27, 34=81, 35=243 42=16, 43=64, 44=256, 45=1024 52=25, 53=125, 54=625, 55=3125 If they are then placed in numerical orde

欧拉计划(python) problem 30

Digit fifth powers Problem 30 Surprisingly there are only three numbers that can be written as the sum of fourth powers of their digits: 1634 = 14 + 64 + 34 + 44 8208 = 84 + 24 + 04 + 84 9474 = 94 + 44 + 74 + 44 As 1 = 14 is not a sum it is not inclu

欧拉计划(python) problem 18

Maximum path sum I Problem 18 By starting at the top of the triangle below and moving to adjacent numbers on the row below, the maximum total from top to bottom is 23. 3 7 4 2 4 6 8 5 9 3 That is, 3 + 7 + 4 + 9 = 23. Find the maximum total from top t

欧拉计划(python) problem 1

problem 1 If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000. python code: k3=0; k5=0; result=0; for i in range(1,10

欧拉计划(python) problem 5

Smallest multiple Problem 5 2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder. What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20? python code : imp

欧拉计划(python) problem 7

10001st prime Problem 7 By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13. What is the 10 001st prime number? python code : import math sqrt=math.sqrt def func(x): k=int(sqrt(x))+1 for i in range(2,k)

欧拉计划(python) problem 8

Largest product in a series Problem 8 The four adjacent digits in the 1000-digit number that have the greatest product are 9 × 9 × 8 × 9 = 5832. 73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 858

欧拉计划(python) problem 26

Reciprocal cycles Problem 26 A unit fraction contains 1 in the numerator. The decimal representation of the unit fractions with denominators 2 to 10 are given: 1/2 =  0.5 1/3 =  0.(3) 1/4 =  0.25 1/5 =  0.2 1/6 =  0.1(6) 1/7 =  0.(142857) 1/8 =  0.12

欧拉计划(python) problem 27

Quadratic primes Problem 27 Euler discovered the remarkable quadratic formula: n2 + n + 41 It turns out that the formula will produce 40 primes for the consecutive values n = 0 to 39. However, when n = 40, 402 + 40 + 41 = 40(40 + 1) + 41 is divisible