循环是一个非常简单的代数结构。它是一个元组(G,+),其中G是一个集合,+是一个二元运算符G×G→G。即+从G中获取两个元素并返回一个新元素。还要求操作员满足两个属性
取消:对于每一个和b在ģ存在唯一的X和ÿ在ģ使得
a + x = b y + a = b
身份:有一个ê在摹使得对于每一个在摹
e + a = a a + e = a
如果您熟悉组的概念,您可能会注意到循环只是一个没有关联属性的组。
循环非常简单,因此人们喜欢添加更多规则以制作更有趣的新结构。一种这样的结构是穆方循环是一个循环,还满足以下四个标识的forall X,ÿ和ž在G ^
z + (x + (z + y)) = ((z + x) + z) + y
((y + z) + x) + z = y + (z + (x + z))
(z + x) + (y + z) = (z + (x + y)) + z
(z + x) + (y + z) = z + ((x + y) + z)
例如,以下Cayley表代表一个Moufang循环:
0 1 2 3
1 0 3 2
2 3 0 1
3 2 1 0
(如果您不熟悉,Cayley表是一个方矩阵M,其中M i,j等于i + j。这是在集合上表示二进制运算符的便捷方法。)
我们可以很容易地证明一个身份0
。取消很难显示,但是蛮力方法产生了这张表
b a → 0 1 2 3
↓
0 0 1 2 3
1 1 0 3 2
2 2 3 0 1
3 3 2 1 0
我们的元素是解决方案的地方
a + x = b = x + a
(您可能会注意到此表与我们的Cayley表相同。我将其留给读者练习,以弄清楚为什么这种Moufang循环是这种情况)
现在我们需要验证我们的结构的Moufang身份。有两种方法可以对特定结构执行此操作,第一种方法是认识到它是关联的,因此可以自动满足条件,但是这通常无法正常工作,因此我们宁愿蛮力执行结果。这里有3个自由变量,每个变量在每个表达式中都有4个值的潜力。这意味着我们必须执行7 * 4 3或448个计算。我将省略原始计算,但是这里有一些Haskell可以用来验证这一点。
任务
给定正整数n作为输入输出,具有n阶的Moufang循环数。(组的顺序是集合的大小)
这是 代码高尔夫球,因此答案将以字节计分,而字节越少越好。
测试用例
这是前71个输入的Moufang循环数
1,1,1,2,1,2,1,5,2,2,1,6,1,2,1,19,1,5,1,6,2,2,1,20,2,2,5,5,1,4,1,122,1,2,1,18,1,2,2,19,1,7,1,5,2,2,1,103,2,5,1,6,1,17,2,17,2,2,1,18,1,2,4,4529,1,4,1,6,1,4,1
12
不是11
。我应该意识到,因为11
是素数。