curriculum/challenges/english/blocks/project-euler-problems-1-to-100/5900f3ac1000cf542c50febf.md
All square roots are periodic when written as continued fractions and can be written in the form:
$\displaystyle \quad \quad \sqrt{N}=a_0+\frac 1 {a_1+\frac 1 {a_2+ \frac 1 {a3+ \dots}}}$
For example, let us consider $\sqrt{23}$:
$\quad \quad \sqrt{23}=4+\sqrt{23}-4=4+\frac 1 {\frac 1 {\sqrt{23}-4}}=4+\frac 1 {1+\frac{\sqrt{23}-3}7}$
If we continue we would get the following expansion:
$\displaystyle \quad \quad \sqrt{23}=4+\frac 1 {1+\frac 1 {3+ \frac 1 {1+\frac 1 {8+ \dots}}}}$
The process can be summarized as follows:
$\quad \quad a_0=4, \frac 1 {\sqrt{23}-4}=\frac {\sqrt{23}+4} 7=1+\frac {\sqrt{23}-3} 7$
$\quad \quad a_1=1, \frac 7 {\sqrt{23}-3}=\frac {7(\sqrt{23}+3)} {14}=3+\frac {\sqrt{23}-3} 2$
$\quad \quad a_2=3, \frac 2 {\sqrt{23}-3}=\frac {2(\sqrt{23}+3)} {14}=1+\frac {\sqrt{23}-4} 7$
$\quad \quad a_3=1, \frac 7 {\sqrt{23}-4}=\frac {7(\sqrt{23}+4)} 7=8+\sqrt{23}-4$
$\quad \quad a_4=8, \frac 1 {\sqrt{23}-4}=\frac {\sqrt{23}+4} 7=1+\frac {\sqrt{23}-3} 7$
$\quad \quad a_5=1, \frac 7 {\sqrt{23}-3}=\frac {7 (\sqrt{23}+3)} {14}=3+\frac {\sqrt{23}-3} 2$
$\quad \quad a_6=3, \frac 2 {\sqrt{23}-3}=\frac {2(\sqrt{23}+3)} {14}=1+\frac {\sqrt{23}-4} 7$
$\quad \quad a_7=1, \frac 7 {\sqrt{23}-4}=\frac {7(\sqrt{23}+4)} {7}=8+\sqrt{23}-4$
It can be seen that the sequence is repeating. For conciseness, we use the notation $\sqrt{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:
$\quad \quad \sqrt{2}=[1;(2)]$, period = 1
$\quad \quad \sqrt{3}=[1;(1,2)]$, period = 2
$\quad \quad \sqrt{5}=[2;(4)]$, period = 1
$\quad \quad \sqrt{6}=[2;(2,4)]$, period = 2
$\quad \quad \sqrt{7}=[2;(1,1,1,4)]$, period = 4
$\quad \quad \sqrt{8}=[2;(1,4)]$, period = 2
$\quad \quad \sqrt{10}=[3;(6)]$, period = 1
$\quad \quad \sqrt{11}=[3;(3,6)]$, period = 2
$\quad \quad \sqrt{12}=[3;(2,6)]$, period = 2
$\quad \quad \sqrt{13}=[3;(1,1,1,1,6)]$, period = 5
Exactly four continued fractions, for $N \le 13$, have an odd period.
How many continued fractions for $N \le n$ have an odd period?
oddPeriodSqrts(13) should return a number.
assert(typeof oddPeriodSqrts(13) === 'number');
oddPeriodSqrts(500) should return 83.
assert.strictEqual(oddPeriodSqrts(500), 83);
oddPeriodSqrts(1000) should return 152.
assert.strictEqual(oddPeriodSqrts(1000), 152);
oddPeriodSqrts(5000) should return 690.
assert.strictEqual(oddPeriodSqrts(5000), 690);
oddPeriodSqrts(10000) should return 1322.
assert.strictEqual(oddPeriodSqrts(10000), 1322);
function oddPeriodSqrts(n) {
return true;
}
oddPeriodSqrts(13);
function oddPeriodSqrts(n) {
// Based on https://www.mathblog.dk/project-euler-continued-fractions-odd-period/
function getPeriod(num) {
let period = 0;
let m = 0;
let d = 1;
let a = Math.floor(Math.sqrt(num));
const a0 = a;
while (2 * a0 !== a) {
m = d * a - m;
d = Math.floor((num - m ** 2) / d);
a = Math.floor((Math.sqrt(num) + m) / d);
period++;
}
return period;
}
function isPerfectSquare(num) {
return Number.isInteger(Math.sqrt(num));
}
let counter = 0;
for (let i = 2; i <= n; i++) {
if (!isPerfectSquare(i)) {
if (getPeriod(i) % 2 !== 0) {
counter++;
}
}
}
return counter;
}