在数学上受到这个问题的启发。
让一个数的因式分解,Ñ,被表示为P(N)= 2 一个 ×3 b ×5 Ç X ...。
(使用X作为乘法符号。)
接着的约数的数目Ñ可以表示为d(N)=(A + 1)×(B + 1)×(C + 1)...。
因此,我们可以很容易地说2n的除数为D(2n)=(a + 2)x(b + 1)x(c + 1)...,3n
的除数为D(3n )=(a + 1)x(b + 2)x(c + 1)...,
依此类推。
挑战:
给定某些除数输入,编写一个使用这些属性来计算n的程序或函数。
输入:
一组整数,我们将其称为w,x,y,z,并具有以下所有定义:
- 所有输入都大于1-
w, x, y, z > 1
- x和z不同-
x<>z
- x和z为质数-
P(x)=x
,D(x)=2
和P(z)=z
,D(z)=2
- w是xn的除数-
D(xn)=w
- y是zn的除数-
D(zn)=y
对于链接问题中给出的问题,输入示例可以为(28, 2, 30, 3)
。这转化为D(2n)=28
和D(3n)=30
,用n=864
。
输出:
满足上述定义和输入限制的单个整数n。如果多个数字符合定义,则输出最小的数字。如果没有这样的整数,则输出假值。
例子:
(w, x, y, z) => output
(28, 2, 30, 3) => 864
(4, 2, 4, 5) => 3
(12, 5, 12, 23) => 12
(14, 3, 20, 7) => 0 (or some other falsey value)
(45, 13, 60, 11) => 1872
(45, 29, 60, 53) => 4176
规则:
- 适用标准代码高尔夫球规则和漏洞限制。
- 标准输入/输出规则适用。
- 输入数字可以任意顺序-请在答案中指定使用的顺序。
- 输入数字可以采用任何合适的格式:以空格分隔,数组,单独的函数或命令行参数等-您可以选择。
- 同样,如果输出到STDOUT,则周围的空格,结尾的换行符等都是可选的。
- 输入解析和输出格式化不是此挑战的有趣功能。
- 出于理智的复杂性和整数溢出的考虑,挑战号n将具有以下限制
1 < n < 100000
:即,您无需担心此范围之外的可能答案。
有关
因此,如果最小的解决方案大于100,000,我可以选择返回一个解决方案还是返回零?
—
丹尼斯
@Dennis如果可以简化代码,请确定。两者都是可以接受的。
—
AdmBorkBork '16