compare co-primes
Nov. 7th, 2012 09:01 pmесть разложения двух целых чисел на простые множители.
можно ли сравнить эти целые числа, не превращая их разложения в BigInteger?
(а чо subject про co-primes: понятно, что a / b > 1 - один из способов; в таком случае задача сравнения a и b упрощается до сравнения co-primes)
можно ли сравнить эти целые числа, не превращая их разложения в BigInteger?
(а чо subject про co-primes: понятно, что a / b > 1 - один из способов; в таком случае задача сравнения a и b упрощается до сравнения co-primes)
no subject
Date: 2012-11-08 07:23 am (UTC)Но я почти уверен, что в худшем случае всё равно придётся перемножать.
Лучше всего спросить на cstheory.stackexchange.com :)
no subject
Date: 2012-11-08 07:59 am (UTC)Да, спасибо, поспрашиваю на stackexchange
no subject
Date: 2012-11-13 04:47 pm (UTC)Но вообще-то здесь есть рациональное зерно. Для сравнения чисел ведь не нужно расчитывать весь логарифм, нужно посчитать только первый член ряда Тейлора. Да, там будет приведение к общему знаменателю, т.е. всё равно длинное умножение понадобится, но размер чисел будет значительно меньшим.
no subject
Date: 2012-11-13 04:55 pm (UTC)no subject
Date: 2012-11-13 05:10 pm (UTC)∀prime p, ln(p)= -ln(1/p) = -ln(1-(p-1)/p) = Σ(((p-1)/p)^n)/n
Далее, поскольку нам нужно лишь сравнить числа, то мы можем ограничиться сравнением первого слагаемого этого ряда; остача ряда будет относиться к остаче ряда для другого числа точно так же.
Мне кажется, должно выполняться также условие ∀ n > 1, Σ(x_i)n-1 > Σ(y_i)n-1 ⇔ Σ(x_i)n > Σ(y_i)n. Если это так, то в этом случае мы суммируем первый член ряда для всех простых чисел в разложении первого числа и сравниваем с суммой первых членов рядов всех простых чисел из разложения второго числа. Да, для суммирования нужно привести к общему знаменателю, но в среднем это будет меньшее число, чем изначальные.
no subject
Date: 2012-11-13 05:33 pm (UTC)Что-то не понял. Первое слагаемое этого ряда - (p-1)/p. Ты предлагаешь, например, для чисел вида p^a * q^b вместо a*ln(p) + b*ln(q) рассматривать a*(p-1)/p + b*(q-1)/q и утверждаешь, что это будет всегда верно?
no subject
Date: 2012-11-13 07:07 pm (UTC)no subject
Date: 2012-11-13 07:23 pm (UTC)no subject
Date: 2012-11-13 07:39 pm (UTC)Может, тогда по двум точкам прикинуть, кто из них растёт быстрее?
no subject
Date: 2012-11-13 07:42 pm (UTC)no subject
Date: 2012-11-16 02:43 pm (UTC)http://cstheory.stackexchange.com/questions/14250/comparing-co-primes
т.е. никак низзя сравнить быстрее.