我需要生成一个类似于这个的表:
18 21 16 40 19 30
18 39 34 58 37 48
21 37 61 40 51
16 56 35 46
40 59 70
19 49
30
第一列和第一行中的数字是相同的数字序列,因此最终表格是对称的。我需要的是获得一个10x10的表,所有表都有唯一的数字,所以没有重复,因为我以后需要这些作为唯一标识符。这更像是一个数学问题,而不是编程。
编辑(素数):
2 3 5 7 11 13 17 19 23 29
2 5 7 9 13 15 19 21 25 31
3 8 10 14 16 20 22 26 32
5 12 16 18 22 24 28 34
7 18 20 24 26 30 36
11 24 28 30 34 40
13 30 32 36 42
17 36 40 46
19 42 48
23 52
29
答案 0 :(得分:3)
这是 a 解决方案:使你的向量为10。
> n=10
> v=10^(1:n)
> v
[1] 1e+01 1e+02 1e+03 1e+04 1e+05 1e+06 1e+07 1e+08 1e+09 1e+10
> m=outer(v,v,"+")
> m[which(upper.tri(m))]
[1] 110 1010 1100 10010 10100 11000
[7] 100010 100100 101000 110000 1000010 1000100
[13] 1001000 1010000 1100000 10000010 10000100 10001000
[19] 10010000 10100000 11000000 100000010 100000100 100001000
[25] 100010000 100100000 101000000 110000000 1000000010 1000000100
[31] 1000001000 1000010000 1000100000 1001000000 1010000000 1100000000
[37] 10000000010 10000000100 10000001000 10000010000 10000100000 10001000000
[43] 10010000000 10100000000 11000000000
> length(unique(m[which(upper.tri(m))])
[1] 45