Нахождение 2 или более чисел, имеющих заданное число как GCF - PullRequest
1 голос
/ 26 ноября 2010

Я не хочу найти GCF заданных чисел.Я использую евклидово для этого.Я хочу создать серию чисел, имеющих заданный GCF.Например, если я выберу 4, я должен получить что-то вроде 100, 72 или 4, 8 и т. Д.,

Любые указатели будут оценены.

Ответы [ 5 ]

1 голос
/ 26 ноября 2010

Ряд пар чисел, имеющих N в качестве GCF, равен {N,N}, {N,2N}, {N,3N}, ....

Фактически, любой набор, состоящий из N и 1 или более кратных N, имеет N в качестве GCF.

0 голосов
/ 02 апреля 2014

Я понимаю, что это старый вопрос, но я собираюсь дать свой собственный ответ вместе с объяснением того, как я туда попал. Во-первых, давайте назовем GCF n.

Первоначально я бы предложил сделать что-то вроде выбора случайных целых чисел и умножения их каждого на n, чтобы получить набор чисел, это, конечно, даст вам числа, равномерно делимые на n, но не обязательно числа с GCF, равным n. Если бы у всех целых чисел был GCF, отличный от '1', то у GCF полученного набора на самом деле был бы GCF в n раз больше этого числа, а не n. При этом умножение n на набор целых чисел представляется наилучшим способом обеспечения того, что каждое число в наборе, по крайней мере, делится на n

.

Один из вариантов - сделать одно из этих чисел 1, но это уменьшит случайность набора, так как n всегда будет в результирующем наборе.

Затем вы можете использовать некоторые простые числа и умножить их на n, но это также уменьшит случайность, так как будет меньше возможных чисел, и числа на самом деле не должны быть простыми, просто взаимно простыми (GCF = 1 для весь набор)

Вы также можете выбрать набор чисел, где каждая пара чисел была бы взаимно простой, но опять же, весь набор должен быть взаимно простым, а не попарно простым (что было бы довольно интенсивно по процессору для больших наборов) .

Так что, если вы собираетесь использовать довольно случайные числа, я бы начал с определения, сколько чисел вы хотите в наборе (будь то случайное или предопределенное число), а затем сгенерировав на единицу меньше этого числа полностью «случайно». Затем я бы вычислил общие простые факторы для этих чисел, а затем выбрал случайное число, которое не имеет ни одного из этих простых факторов. Одного лишь обеспечения того, что у него нет того же GCF, недостаточно, поскольку у GCF могут быть общие факторы для окончательного числа. Требуется только одно число в наборе, которое не имеет ни одного из тех же простых множителей, что и другие числа в наборе, чтобы сделать GCF этого набора '1'. Затем я взял бы этот набор чисел и умножил каждое на n, чтобы получить желаемый набор чисел.

0 голосов
/ 26 ноября 2010

Выберите набор чисел, которые не зависят от пар (то есть gcd (x, y) = 1 для каждого x <> y в наборе).Умножьте каждое число на целевую GCD.

0 голосов
/ 26 ноября 2010

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 $ не k_4 = 4 * 4 $, так как 4 делит 4, но $ k_4 = 4 * 5 $, так как 4 не делит 5 и т. д.

0 голосов
/ 26 ноября 2010

Если 4 - это вход, вам нужен список чисел, у которых наибольший общий коэффициент равен 4. Вы можете убедиться в этом, сделав 4 единственным фактором во всей серии. Следовательно, вы умножаете число (4) на все простые числа, чтобы убедиться, что.

прайм-лист = 3, 5, 7, 11, 13, 17

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

Это даст вам список такой, что GCF любых двух чисел будет 4

...