回应“Euler的FizzBuzz”

2021-03-08 16:04:01

最近在龙虾上提交的一篇文章,它使用一些数字理论讨论了对FizzBu​​zz问题的非常聪明的方法。

该方法足够授予,每个选择的fizzbuzz数字都是一个独特的素数,但是当我们开始涉及综合数字时,事情就开始得到一个小毛茸茸的。

文章中使用的一些语言导致我相信这种后一种情况的子列详细信息被忽视了。我的目标是讨论这里的那些。

问题被问到:这是否[方法]为我们可能选择的每一个都保持真实吗?

作者似乎暗示了这个问题的答案是肯定的,但答案实际上是不,我们将锻炼。

此外,以下索赔是:作为因素所选择的数字不需要是素数,但如果其中一个是另一个因素,则一些组将不存在。

在此上下文中给出的示例涉及选择fighbuzz numbers \(2 \)和\(4 \),以便可分离的数字\(2 \)faility \(fizz \)和可分割的数字(4 \)产量\(fizzbuzz \)。

对于传递读者来说,这可能是有意义的。清楚地通过\(4 \)可分离的数字是\(2 \)和\(4 \),所以我们应该'期待只是看到\(Buzz \)。

这种直觉实际上是误导性的,即使似乎是逻辑的逻辑,也有其他事情在没有与共享因素有多多多小事关系的情况下发生的。

事实上,它不是'吨只是事情变得怪异当所选FizzBu​​zz数字共享因素的情况下。甚至在他们是非素制的时候发生了!

它值得一提的是,这实际上是我的第一个个人技术博客文章,我可以想到比数学的写作更适合的东西。我希望结果有一些有意义的讨论,而那人们则获得读物的东西。

我想强调,以下是对链接文章的作者或他们的工作的攻击,而是仅仅是一些批评/评论一些使用的数学和解释。

当你通过这篇文章的方式,你'请注意,我已经与大量的外部资源相关联,有时也许我给出的解释可能似乎有点手力,尤其是读者谁争夺' t熟悉潜在的数学。

以下内容已经很长,如果我要进入杂草来解释每一个细节,那就更久了。希望是您将成为您想要的好奇,并探索必要/期望讨论的一些主题。

所说的,我知道有很多被覆盖,所以如果有任何不清楚的话,我打开并期待任何随后的讨论,无论是通过电子邮件还是在龙虾的评论中。

我不会在这里重述整篇文章,我将假设您至少通过它撇去,并且对所提出的广义FIZZBUZZ解决方案看起来的普遍了解。

我鼓励你用不同的FizzBu​​zz数字来玩,看看你想出了什么。

出于我们讨论的目的,我重申了所提出的解决方案,虽然有点不同(I' VE为上下文添加了更多细节):

给定:fizzbuzz字的集合\(w \),其中\(\ vert w \ vert = k \),fizzbuzz编号的数量 - 例如\(k = 2 \)和\(w = \ {fizz, Buzz \} \)

将每个\(n_i \)\(f \ colon \ {n_1,n_2,...,n_k \} \ to,n_k \} \ to w \)\ of

作者声称我们可以定义一个函数(我们' ll致电Fignbuzz分配函数):\ begin {arequation} g(a)= \ begin {is} a& \ text {if \(h(a)= 1 \;(\ bmod \; n)\)} \\ f(n_i)\ cdot f(n_ {i + 1})\ cdot ... f(n_j) & \ text {如果\(h(a)\)意味着\(a \)可被\(n_i,...,n_j \)可分开; \(i \ leq j \),}} \\& \ text {(注意当\(i = j \)得到单次案例,即\(fizz \))} \ ent {is} \ end {等式}其中:\ begin {公式} h(a)= a ^ e \;(\ bmod \; n)\ Equiv \ begin {is} 0 \;(\ bmod \; n)& \ text {if \(n \; \ vert \; a \)(以及所以所有\(n_1 ... n_k \)划分\(a \))} \\ r_ {n_h,...,n_j} \ ;(\ bmod \; n)& \ text {如果\(a \)由全部\(n_i \)}} \ textit {除} \ text {for \(n_h,...,n_j \)} \\ 1 \;(\ bmod \; n)& \ text {如果\(a \)相对prime到n(以及所有\(n_1 ... n_k \))} \\ \ end {is} \ end {等式}所谓的fizzbuzz的一般解决方案问题。让'尝试一些例子。注意:函数施工索赔仅是 - 索赔。正如我们所看到的,所以规定的建筑手段并不适合所有案例。换句话说,我们将看到右侧的条件开始失败。

让\(n_1 = 3 \)和\(n_2 = 5 \),这样:然后:\ begin {arearation} g(a)= \ begin {is} a& \ text {if \(h(a)= 1 \;(\ bmod \; 15)\)} \\ fizz&文本{如果\(h(a)\)暗示\(a \)通过\(3 \)而不是\(5 \)} \\ Buzz& \ text {如果\(h(a)\)意味着\(a \)可被\(5 \)可分开,而不是\(3 \)} \\ fizzbuzz& \ text {if \(h(a)= 0 \;(\ bmod \; 15)\)} \\ \ end {uis} \ neat {arearation}并且我们使用作者&supment \(h(a)\) #39;在文章中的方法:\ begin {arequation} h(a)= a ^ e \;(\ bmod \; 15)\ Equiv \ begin {is} 0 \;(\ bmod \; 15)& \ text {if \(15 \; \ vert \; a \)} \\ 6 \;(\ bmod \; 15)& \ text {如果\(a \)被\(3 \)可被\(3 \)和相对素数可分开到\(5 \)} \\ 10 \;(\ bmod \; 15)& \ text {如果\(a \)被\(5 \)可分离,并且相对素质到\(3 \)} \\ 1 \;(\ bmod \; 15)& \ text {如果\(a \)相对\(15 \)(\(3 \)和\(5 \)和\(5 \))} \ end {is} \ neg {arequition}

对于\(a = 3 \),计算\(a ^ e \;(\ bmod \; 15)= 3 ^ 4 \;(\ bmod \; 15)\)产生\(6 \),所以\( g(a)= fizz \)。到目前为止,一切都很好!同样,\(a = 5 \),计算\(a ^ e \;(\ bmod \; 15)= 5 ^ 4 \;(\ bmod \; 15)\)产生\(10 \),所以(g(a)= buzz \)按预期。

我' ll将它留给您来验证\(a = 15 \)会导致我们\(fizzbuzz \)。

让\(a = 3796875 \)。我们可以告诉它' s可被\(5 \)可分开,因为在那些地方有一个\(5 \)。我们还可以告诉它是可被\(3 \)可分离的,因为数字的总和是可分离的(3 \)(如果你'重复不熟悉这个技巧google被3个技巧可分开)。

让'我们看看我们是否可以尝试在这种情况下要了解什么' \(n_1 \)和\(n_2 \)在示例中都是素数,所以我们' ll试图找出我们可以从中确定的东西:

为了获得\(fizzbuzz \),我们需要\(a ^ e \;(\ bmod \; n_1n_2)\等于0 \;(\ bmod \; n_1n_2)\)。让' s假设是这种情况。但是之后:

也就是说,我们只在\(n_1 \)和\(n_2 \)划分\(a \)时得到\(fizzbuzz \)。

为了既没有,我们需要\(a ^ e \;(\ bmod \; n_1n_2)\等式1 \;(\ bmod \; n_1n_2)\)。让' s假设是这种情况。

回想一下,由于我们选择\(n_1 \)和\(n_2 \),我们有\(e = \ phi(n_2n_2)\)。换句话说,欧拉' SEREM适用。 IE。

\(a ^ e \;(\ bmod \; n_1n_2)\等式1 \;(\ bmod \; n_1n_2)\ iff a \)是相对素数的\(n_1n_2 \ iff a \)是相对素质的\( n_1 \)和\(n_2 \)。

所以我们在\(a \)相对\(n_1 \)和\(n_2 \)中时,我们既没有\(fizz \)也没有\ \(buzz \)。我们上面的讨论隐含地显示,在\(a \)被\(n_1 \)或\(n_2 \)中被置于\(a \)以来,我们恰好置于\(fizz \)或\(buzz \)之一否则以前的一个案件将适用。

要不同地,这种情况完全恰好\(a \)何时暂时\(0 \;(\ bmod \; n_1n_2)\)nor \(1 \;(\ bmod \; n_1n_2)\)。

让\(n_1 = 4 \)和\(n_2 = 16 \),以便:\我们的\(fizzbuzz \)分配函数应该看起来像这样的东西:\ begin {arequation} g(a)= \ begin {suists} a & \文本{如果\(h(a)= 1 \;(\ bmod \; 64)\)} \\ fizz& \ text {如果\(h(a)\)意味着\(a \)可被\(4 \)可分开,而不是\(16 \)} \\ Buzz& \ text {如果\(h(a)\)意味着\(a \)可被\(16 \)可分离,而不是\(4 \)} \\ fizzbuzz& \ text {if \(h(a)= 0 \;(\ bmod \; 64)\)} \\ \ end {is} \ end {等式}我们需要弄清楚什么\(a ^ 8 \;( \ bmod \; 64)\)与任何任意\(a \ mathbb {z} ^ +} ^ + \)的modulo \(64 \)一致。(n_1 = 4 \)。要做到这一点,我们解决了关系:\ begin {arearation} \ begin {对齐} a ^ e =(4l)^ 8 \ x \ chariv x \;(\ bmod \; 64)\; \ text {对于某些\(l,x \ in \ mathbb {z} ^ + \)} \\ \ end {对齐} \ end {arequation} \ begin {等式} \意味着4 ^ 8l ^ 8 \ chariv x \ ;(\ bmod \; 64)\; \; \ end {arearation}注意\(4 ^ 8 \)被\(64 \)可分离(您可以使用计算器验证此功能),因此通过模块化算术:\ begin {arequation} 4 ^ 8l ^ 8 \ Equiv 0L ^ 8 = 0 \;(\ bmod \; 64)\; \; \结束{等式}意味着\(x \)是一致的\(0 \)modulo \(64 \)。奇怪的。花点时间消化,看看你是否意识到任何东西。

这所说的是,对于任何\(4 \),\(a ^ 8 \;(\ bmod \; 64)\等于0 \;(\ mathbb {z} ^ \)是什么即(\ mathbb {z} ^ \)。 (\ bmod \; 64)\)。

我们遇到了用所描述的方法的一个问题遇到了一个问题 - 即似乎是正整数\(a \),哪个\(a ^ e \;(\ bmod \; n))\ Equiv 0 \ ;(\ bmod \; n)\),即使\(n \ not {\ vert} \; a \)。 但这是正常的,对吧? 作者在\(2 \)和\(4 \)的情况下,如果有共有因素,某些组将不存在某些组,我们在这里有。