查找具有给定数字的2个或更多数字作为GCF

时间:2010-11-26 05:00:51

标签: c# java algorithm greatest-common-divisor

我不想找到给定数字的GCF。我使用Euclidean。我想生成一系列具有给定GCF的数字。例如,如果我选择4,我应该得到类似100,72或4,8等的东西,

任何指针都会受到赞赏。

5 个答案:

答案 0 :(得分:1)

一系列以N作为GCF的数字对{N,N}, {N,2N}, {N,3N}, ...

事实上,任何由N和1个或更多倍N组成的集合都有N作为其GCF。

答案 1 :(得分:0)

如果输入为4,则需要一个最大公因子为4的数字列表。您可以通过将4作为整个系列中的唯一因子来确保这一点。因此,您将数字(4)乘以所有素数以确保。

prime-list = 3,5,7,11,13,17

gcf-list for 4 - > (3 * 4)12,(4 * 5)20,(4 * 7)28,(4 * 11)44,(4 * 13)52,(4 * 17)68,......

这将为您提供一个列表,使任何两个数字的GCF为4

答案 2 :(得分:0)

1.也许可以在http://math.stackexchange.com

更好地回答这个问题

2.只需将不是GCD因子的数字相乘,即可构建您感兴趣的数字。对于给定GCD = 4的例子,这意味着 $ k_1 = 4 $ GCD本身 $ k_2 = 4 * 2 $因为4不分2 $ k_3 = 4 * 3 $因为4不分3 $ not k_4 = 4 * 4 $因为4除以4但是 $ k_4 = 4 * 5 $因为4不分5等等。

答案 3 :(得分:0)

选择一组与成对无关的数字(对于集合中的每个x<> y,gcd(x,y)= 1)。将每个数字乘以目标GCD。

答案 4 :(得分:0)

我意识到这是一个古老的问题,但我将提供我自己的答案,并解释我是如何到达那里的。首先,让我们调用GCF n。

最初我建议做一些事情,比如选择随机整数并将它们乘以n得到数字集,这当然会给你数字可以被n整除,但不一定是GCF为n的数字。如果整数都发生了除“1”以外的GCF,那么结果集的GCF实际上将具有n倍于该数字的GCF,而不是n。这就是说n乘以一组整数似乎是确保集合中每个数字至少可被n整除的最佳方法

一种选择是将这些数字中的一个设为1但这会降低集合的随机性,因为n总是在结果集中。

接下来你可以使用一些素数并将它们乘以n,但这也会减少随机性,因为数字可能会更少,并且数字实际上不需要是素数,只是共同素数(GCF = 1表示整套)

你也可以选择一组数字,其中每对数字都是共同素数,但同样,整个集合需要是共同素数而不是成对的素数(对于较大的集合,这将是相当大的处理器密集型)

因此,如果你想要相当随机的数字,我首先要确定你想要在集合中有多少个数字(无论是随机确定还是预先确定),然后完全“随机”生成一个小于该数字的数字。然后我会计算这些数字的公共素因子,然后选择一个没有任何这些素数因子的随机数。仅仅确保它没有相同的GCF是不够的,因为GCF可能有最终数量的共同因素。它只需要一组中的一个数字,该数字与该组中的其他数字没有任何相同的素因子,以使该组的GCF成为'1'。然后我会取这组数字并将每个数乘以n得到你想要的数字集。