login
Cantor's List: Pairs (i, j) of relatively prime positive integers sorted first by i + j then by i.
6

%I #33 Mar 04 2024 08:48:34

%S 1,1,1,2,2,1,1,3,3,1,1,4,2,3,3,2,4,1,1,5,5,1,1,6,2,5,3,4,4,3,5,2,6,1,

%T 1,7,3,5,5,3,7,1,1,8,2,7,4,5,5,4,7,2,8,1,1,9,3,7,7,3,9,1,1,10,2,9,3,8,

%U 4,7,5,6,6,5,7,4,8,3,9,2,10,1,1,11,5,7,7,5,11,1

%N Cantor's List: Pairs (i, j) of relatively prime positive integers sorted first by i + j then by i.

%C a(2*n-1) / a(2*n) is the n-th fraction in Cantor's enumeration of the positive rational numbers. - _Peter Luschny_, Oct 10 2023

%H N. J. A. Sloane, <a href="/A352911/b352911.txt">Table of n, a(n) for n = 1..9914</a>

%H Georg Cantor, <a href="http://gdz.sub.uni-goettingen.de/dms/resolveppn/?PPN=GDZPPN002156806">Ein Beitrag zur Mannigfaltigkeitslehre</a>, Journal für die reine und angewandte Mathematik 84 (1878), 242-258, (p. 250).

%H N. J. A. Sloane, <a href="/A352911/a352911.txt">List of the 4957 pairs (i,j) with i+j <= 127</a>. [Note this is not a b-file.]

%H <a href="/index/Ra#rational">Index entries for sequences related to enumerating the rationals</a>

%e The first few pairs are, seen as an irregular triangle:

%e [1, 1],

%e [1, 2], [2, 1],

%e [1, 3], [3, 1],

%e [1, 4], [2, 3], [3, 2], [4, 1],

%e [1, 5], [5, 1],

%e [1, 6], [2, 5], [3, 4], [4, 3], [5, 2], [6, 1],

%e [1, 7], [3, 5], [5, 3], [7, 1],

%e [1, 8], [2, 7], [4, 5], [5, 4], [7, 2], [8, 1],

%e [1, 9], [3, 7], [7, 3], [9, 1],

%e ...

%p CantorsList := proc(upto) local C, F, n, t, count;

%p C := NULL; count := 0:

%p for n from 2 while count < upto do

%p F := select(t -> igcd(t, n-t) = 1, [$1..n-1]);

%p C := C, seq([t, n - t], t = F);

%p count := count + nops(F) od:

%p ListTools:-Flatten([C]) end:

%p CantorsList(40); # _Peter Luschny_, Oct 10 2023

%t A352911row[n_]:=Select[Array[{#,n-#}&,n-1],CoprimeQ[First[#],Last[#]]&];

%t Array[A352911row,10,2] (* Generates 10 rows *) (* _Paolo Xausa_, Oct 10 2023 *)

%o (Python)

%o from math import gcd

%o from itertools import chain, count, islice

%o def A352911_gen(): # generator of terms

%o return chain.from_iterable((i,n-i) for n in count(2) for i in range(1,n) if gcd(i,n-i)==1)

%o A352911_list = list(islice(A352911_gen(),30)) # _Chai Wah Wu_, Oct 10 2023

%Y Cf. A352909, A020652 or A038566 (i-coordinates), A020653 (j-coordinates), A366191.

%K nonn,tabf,easy,look

%O 1,4

%A _N. J. A. Sloane_, Apr 09 2022