Stackoverflow在stackexchange数学网站的右侧窗格中提升了这个数学question。
我很想知道答案。原来这个问题是关于一个特定的案例(3!⋅5!⋅7!=n!)
,答案也是针对这个具体的案例。
从程序员/编程的角度来看,我想知道什么是最有效的解决问题的算法。
我们有两种情况。一个问题总是有答案而另一个没有。
输入为3,5,7,输出为10,与链接问题相同。
答案 0 :(得分:2)
该算法相当简单:
如果a = 3,b = 5,c = 7,你会发现7以下的下一个素数,即11,并尝试7 + 1和11-1之间的所有数字,包括(即8,9, 10)作为n。
的候选人答案 1 :(得分:0)
因素a!, b!, c!, ...
。对于p
的给定素数a
,它会多次显示在a!
中:
floor(a / p) + floor(a / p^2) + ...
例如,5
中出现26!
:
26 / 5 + 26 / 25 = 5 + 1 = 6 times
现在,您可以对n
进行二分搜索,并检查a!*b!*c!*...
中的每个素数因子是否在m!
中出现的次数完全相同,其中m
是中间点您的二进制搜索迭代之一。