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.
刚学octave,还不熟。先定义函数算cycle长度,再把最长的给挑出来。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| function length = digitRecurringLength(n)
rest = 1;
length = 0;
flag = 1;
restold=rest;
while flag
rest = mod(rest * 10, n);
length = length + 1;
if rest==1 | rest==0 | rest==restold
flag = 0;
end
restold = rest;
end
end |
1
2
3
4
5
6
7
8
9
10
11
| numbers = 1:1000;
primer = numbers(find(isprime(numbers) ==1));
len = zeros(1,length(primer));
for i.html">i = 1:length(primer)
len(i.html">i) = digitRecurringLength(primer(i.html">i));
end
answer = primer(find(len == max(len)));
fprintf(['the number which contains the longest recurring cycle is : $%f\n'], answer); |
Related Posts