# Euler Problem 026

## Aug 19, 2019 09:03 · 370 words · 2 minute read javascript toy problems development euler

### The problem

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.125
1/9	= 	0.(1)
1/10	= 	0.1
``````

Where 0.1(6) means 0.166666…, and has a 1-digit recurring cycle. It can be seen that 1/7 has a 6-digit recurring cycle.

Find the value of d < 1000 for which 1/d contains the longest recurring cycle in its decimal fraction part.

#### Solution

The problem is an interesting one. My initial thoughts lead me down the path of seeing if I could find cycles using JavaScript division, but I realized that it wasn’t necessary. I’m not particularly proud of my solution to this problem. There are a number of things that I’m still a little shaky on. First I only find the longest non terminating decimal sequence. That is I don’t remove any leading digits that might not be a part of the cycle. For instance in my algorithm 1/6 = 0.1(6) should have a cycle of 1 but I give it a length of two. This doesn’t actually matter because 1/983 has the longest cycle regardless, but this might not work for other number ranges. In any case here is my solution. I could do some more optimizations, but it runs rather quickly (`Finished in 0.046 seconds`).

``````var findNum = (num, den) =>{
while(den > num){
num = num * 10;
}
return num;
}

var findRepeatingNumerator = (den) => {
var count = 0;
var num = 1;
var nums = {};
while(true){
count++;
num = findNum(num, den);
if(nums[num]){
return count;
}
nums[num] = true;
var remainder = num % den;
if(remainder === 0){
return 0;
}
num = remainder;
}
}

var findLargest = () => {
var largest = 0;
var largestI = 0;
for(var i = 2; i < 1001; i++){
var current = findRepeatingNumerator(i);
if(current > largest){
largest = current;
largestI = i;
}
}
return largestI;
}
``````

If you’d like to see the full code please see my daily toy problem exercises that I’ve been working on. It includes tests and a README.

tweet Share