Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 查找数组中的最小整数,该整数是所有先前整数的除数_Algorithm_Optimization_Language Agnostic_Number Theory - Fatal编程技术网

Algorithm 查找数组中的最小整数,该整数是所有先前整数的除数

Algorithm 查找数组中的最小整数,该整数是所有先前整数的除数,algorithm,optimization,language-agnostic,number-theory,Algorithm,Optimization,Language Agnostic,Number Theory,我一直在解决前几年的考试问题进行练习,我遇到了一个问题,如果没有我不知道的数论关系,我/怀疑/我无法解决 问题是: 给定一个由N个整数组成的数组,找出最小的整数,它是的除数 所有以前的整数 现在的问题是,如果我不能缓存模运算的任何结果,那么复杂性就变成了O(n^2),它的运行速度不够快,无法通过问题的自动测试,因为有一个时间限制,并且可能有300万个元素 是否存在f(d,g[a1,a2,a3,a4,…,an])为真的f和g当且仅当d | a1,d | a2,d | a3,…,d | an?如果没

我一直在解决前几年的考试问题进行练习,我遇到了一个问题,如果没有我不知道的数论关系,我/怀疑/我无法解决

问题是:

给定一个由N个整数组成的数组,找出最小的整数,它是的除数 所有以前的整数

现在的问题是,如果我不能缓存模运算的任何结果,那么复杂性就变成了O(n^2),它的运行速度不够快,无法通过问题的自动测试,因为有一个时间限制,并且可能有300万个元素

是否存在f(d,g[a1,a2,a3,a4,…,an])为真的f和g当且仅当d | a1,d | a2,d | a3,…,d | an?如果没有,你们对解决这个问题的方法还有什么建议吗


感谢您的帮助

一个
除掉所有前面的元素,当且仅当它除掉这些元素的最大公约数时


因此,您需要跟踪
gcd(a1,a2,…,an)
an(…)的最小
an
,其
an | gcd(…)

仅将此保留在此处:


我解决了这个问题,注意到如果我们从第I个元素开始,连续检查前面的元素直到第j个,那么所有元素之间的元素都是第I个元素的倍数。如果条件不适用于前面的所有元素,那么如果我们从元素i-1到j开始,它也不适用。我们可以从第j个元素重新开始并重复该过程。因此,从最后一个元素开始,我们保证找到解决方案。这还需要找到最小的解决方案,因为所有其他解决方案都必须包含在前面的元素中,并且必须是第一个解决方案的倍数。

感谢您的快速回答!事实上,我开始使用gcd开发一个解决方案,但时间太晚了,出于某种原因,我放弃了它。在大多数情况下,您可以将此短路到
返回1