Quantcast
Channel: YGC » ComputerScience
Viewing all articles
Browse latest Browse all 27

problem 26

$
0
0
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长度,再把最长的给挑出来。

?View Code MATLAB
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
?View Code MATLAB
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


Viewing all articles
Browse latest Browse all 27

Trending Articles