内容提要:测试整数的输入序列是否为“允许的”,这意味着它不涵盖任何模数的所有残基类别。
什么是“允许”序列?
给定一个整数m≥2,模m的残基类别就是公共差m的m个可能的算术级数。例如,当m = 4时,模4的4个残基类别为
..., -8, -4, 0, 4, 8, 12, ...
..., -7, -3, 1, 5, 9, 13, ...
..., -6, -2, 2, 6, 10, 14, ...
..., -5, -1, 3, 7, 11, 15, ...
第k个残基类由所有整数组成,所有整数除以m等于k。(只要为负整数正确定义“余数”)
如果整数a1,a2,...,ak的序列未能与至少一个残基类别相交,则该序列可取m模。例如,{0,1,2,3}和{-4,5,14,23} 不允许以 4 为模,但是{0,1,2,4}和{0,1,5,9}和{0,1,2,-3} 是模4的允许值。此外,{0,1,2,3,4}是模4的不允许值,而{0,1,2} 是模4的可接受值。
最后,如果每个整数m≥2都可以模m取整数,则整数序列只是可允许的。
挑战
编写一个程序或函数,该程序或函数将整数序列作为输入,如果该序列是允许的,则返回一个(一致的)Truthy值,如果该序列不可接受的,则返回一个(一致的)Falsy值。
整数的输入序列可以采用任何合理的格式。您可以假设输入序列至少包含两个整数。(虽然可能没有帮助,但是您也可以假设输入整数是不同的,尽管这可能无济于事。)您必须能够处理正整数和负整数(和0)。
通常的代码高尔夫评分:最短的答案(以字节为单位)获胜。
样品输入
以下输入序列应分别提供一个Truthy值:
0 2
-1 1
-100 -200
0 2 6
0 2 6 8
0 2 6 8 12
0 4 6 10 12
-60 0 60 120 180
0 2 6 8 12 26
11 13 17 19 23 29 31
-11 -13 -17 -19 -23 -29 -31
以下输入序列应分别提供Falsy值:
0 1
-1 4
-100 -201
0 2 4
0 2 6 10
0 2 6 8 14
7 11 13 17 19 23 29
-60 0 60 120 180 240 300
提示
- 请注意,任何3个或更少整数的序列都将自动允许取模4。更一般地说,当m> k时,长度为k的序列将自动允许模m。由此可见,测试可接纳性实际上仅需要检查有限数量的m。
- 还要注意2除以4,并且任何可取模2的序列(即所有偶数或全奇数)都将自动被允许取模4。更普遍的是,如果m除n且一个序列可取模m,则它是自动允许的模数n。因此,要检查可否受理性,只要您愿意,仅考虑素数就足够了。
- 如果a1,a2,...,ak是可允许的序列,则a1 + c,a2 + c,...,ak + c也可用于任何整数c(正数或负数)。
数学相关性(可选阅读)
令a1,a2,...,ak为整数序列。假设存在无限多个整数n,使得n + a1,n + a2,...,n + ak均为素数。然后可以很容易地证明a1,a2,...,ak必须是可接受的。实际上,假设a1,a2,...,ak是不允许的,并且让m为一个数字,使得a1,a2,...,ak对m取模是不允许的。那么无论我们选择什么n,数字n + a1,n + a2,...,n + ak之一必须是m的倍数,因此不能为素数。
在黄金k元组猜想是这样的说法,这仍然是数论中一个敞开的问题相反:它断言,如果A1,A2,...,AK是一个容许序列(或K-元组),则有应该是无限多个整数n,使得n + a1,n + a2,...,n + ak都是素数。例如,可允许的序列0,2得出这样的结论:应该有无限多的整数n使得n和n + 2都是素数,这是孪生素数猜想(仍然未经证明)。
-60 0 60 120 180 240 300
与每个残差类别以7为模相交,因此它是不允许的。
[_60:0:60:120:180]
给我真实;事实上,它不相交的每一个至少一类m
来自2
于5
包容性; 此外,它m
从每个2
到5
包含范围都仅相交一个类。