Stern-Brocot sequence: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add ALGOL-M) |
|||
Line 561: | Line 561: | ||
First 9 at 35; First 10 at 39; First 100 at 1179. |
First 9 at 35; First 10 at 39; First 100 at 1179. |
||
Correct: The first 999 consecutive pairs are relative prime!</pre> |
Correct: The first 999 consecutive pairs are relative prime!</pre> |
||
=={{header|ALGOL-M}}== |
|||
<lang algolm>begin |
|||
integer array S[1:1200]; |
|||
integer i,ok; |
|||
integer function gcd(a,b); |
|||
integer a,b; |
|||
gcd := |
|||
if a>b then gcd(a-b,b) |
|||
else if a<b then gcd(a,b-a) |
|||
else a; |
|||
integer function first(n); |
|||
integer n; |
|||
begin |
|||
integer i; |
|||
i := 1; |
|||
while S[i]<>n do i := i + 1; |
|||
first := i; |
|||
end; |
|||
S[1] := S[2] := 1; |
|||
for i := 2 step 1 until 600 do |
|||
begin |
|||
S[i*2-1] := S[i] + S[i-1]; |
|||
S[i*2] := S[i]; |
|||
end; |
|||
write("First 15 numbers:"); |
|||
for i := 1 step 1 until 15 do |
|||
begin |
|||
if i-i/5*5=1 then write(S[i]) else writeon(S[i]); |
|||
end; |
|||
write(""); |
|||
write("First occurrence:"); |
|||
for i := 1 step 1 until 10 do write(i, " at", first(i)); |
|||
write(100, " at", first(100)); |
|||
ok := 1; |
|||
for i := 1 step 1 until 999 do |
|||
begin |
|||
if gcd(S[i], S[i+1]) <> 1 then |
|||
begin |
|||
write("gcd",S[i],",",S[i+1],"<> 1"); |
|||
ok := 0; |
|||
end; |
|||
end; |
|||
if ok = 1 then write("The GCD of each pair of consecutive members is 1."); |
|||
end</lang> |
|||
{{out}} |
|||
<pre>First 15 numbers: |
|||
1 1 2 1 3 |
|||
2 3 1 4 3 |
|||
5 2 5 3 4 |
|||
First occurrence: |
|||
1 at 1 |
|||
2 at 3 |
|||
3 at 5 |
|||
4 at 9 |
|||
5 at 11 |
|||
6 at 33 |
|||
7 at 19 |
|||
8 at 21 |
|||
9 at 35 |
|||
10 at 39 |
|||
100 at 1179 |
|||
The GCD of each pair of consecutive members is 1.</pre> |
|||
=={{header|APL}}== |
=={{header|APL}}== |