Нахождение целых чисел с определенным свойством - Euler проблема проекта 221

Я думаю, что в вашем цикле for вы $("#ufo"), вместо этого вы должны использовать $("#ufo-table"), делая это, вы добавляете строку таблицы и данные таблицы внутри таблицы, а затем добавляете таблицу внутрь $("#ufo").

9
задан iCodez 22 January 2015 в 16:13
поделиться

3 ответа

Как со многими Euler проблемами Проекта, прием должен найти технику, которая уменьшает решение для грубой силы во что-то более прямое:

A = pqr and 
1/A = 1/p + 1/q + 1/r

Так,

pq + qr + rp = 1  or  -r = (pq - 1)/(p + q)

Без потери общности, 0 <p <-q <-r

Там существует k, 1 <= k <= p

-q = p + k
-r = (-p(p + k) – 1) / (p + -p – k)  = (p^2 + 1)/k + p

Но r является целым числом, таким образом, k делит p^2 + 1

pqr = p(p + q)((p^2 + 1)/k + p)

Таким образом для вычислений нас должно выполнить итерации по p, и где k может только принять значения, которые являются делителями p, в квадрате плюс 1.

Добавляя каждое решение набора, мы можем остановиться, когда мы находим необходимое 150000-е александрийское целое число.

3
ответ дан 4 December 2019 в 23:08
поделиться

Хорошо. Вот еще некоторое проигрывание с моим китайским решением для Теоремы Остатка. Оказывается, что a+b не может быть продуктом никакого начала, p, если p = 1 (модификация 4). Это позволяет более быстрое вычисление, поскольку мы только должны проверить a+b, которые являются кратными числами начал такой как 2, 5, 13, 17, 29, 37...

Таким образом, вот образец возможных значений a+b:

[5, 8, 10, 13, 16, 17, 20, 25, 26, 29, 32, 34, 37, 40, 41, 50, 52, 53, 58, 61, 64, 65, 68, 73, 74, 80, 82, 85, 89, 97, 100]

И вот полная программа с помощью китайской Теоремы Остатка:

cachef = {}
def factors(n):
    if n in cachef: cachef[n]

    i = 2
    while i*i <= n:
        if n%i == 0:
            r = set([i])|factors(n//i)
            cachef[n] = r
            return r

        i += 1

    r = set([n])
    cachef[n] = r
    return r

cachet = {}
def table(n):
    if n == 2: return 1
    if n%4 != 1: return

    if n in cachet: return cachet[n]

    a1 = n-1
    for a in range(1, n//2+1):
        if (a*a)%n == a1:
            cachet[n] = a
            return a

cacheg = {}
def extended(a, b):
    if a%b == 0:
        return (0, 1)
    else:
        if (a, b) in cacheg: return cacheg[(a, b)]

        x, y = extended(b, a%b)
        x, y = y, x-y*(a//b)

        cacheg[(a, b)] = (x, y)
        return (x, y)

def go(n):
    f = [a for a in factors(n)]
    m = [table(a) for a in f]

    N = 1
    for a in f: N *= a

    x = 0
    for i in range(len(f)):
        if not m[i]: return 0

        s, t = extended(f[i], N//f[i])
        x += t*m[i]*N//f[i]

    x %= N
    a = x
    while a < n:
        b = n-a
        if (a*b-1)%(a+b) == 0: return a*b*(a*b-1)//(a+b)
        a += N




li = [5, 8, 10, 13, 16, 17, 20, 25, 26, 29, 32, 34, 37, 40, 41, 50, 52, 53, 58, 61, 64, 65, 68, 73, 74, 80, 82, 85, 89, 97, 100]

r = set([6])
find = 6

for a in li:
    g = go(a)
    if g:
        r.add(g)
        #print(g)
    else:
        pass#print(a)


r = list(r)
r.sort()

print(r)
print(len(r), 'with', len(li), 'iterations')

Это лучше, но я надеюсь улучшиться, это далее (например, a+b = 2^n, кажется, никогда не решения).

Я также начал рассматривать основные замены, такие как:

a = u+1 и b = v+1

ab = 1 (модификация a+b)

uv+u+v = 0 (модификация u+v+2)

Однако я не вижу много улучшения с этим...

0
ответ дан 4 December 2019 в 23:08
поделиться

Эта статья о китайском остатке, внедрении FAST, может помочь Вам: www.codeproject.com/KB/recipes/CRP.aspx

Это - больше ссылок для инструментов и библиотек:

Инструменты:

Максимумы Максимумы http://maxima.sourceforge.net/ являются системой для управления символьными и числовыми выражениями, включая дифференцирование, интеграцию, Ряд Тейлора, преобразования Лапласа, обыкновенные дифференциальные уравнения, системы линейных уравнений, многочленов, и наборов, списков, векторов, матриц и тензоров. Максимумы приводят к высокой точности числовые результаты при помощи правильных дробей, целых чисел произвольной точности и переменных чисел с плавающей точкой точности. Максимумы могут вывести на печать функции и данные в два и три измерения.

Mathomatic http://mathomatic.org/math/ Mathomatic является свободный, портативный, CAS общего назначения (Компьютерная Система Алгебры) и программное обеспечение калькулятора, которое может символически решить, упростить, объединить, и сравнить уравнения, выполнить комплексное число и полиномиальную арифметику и т.д. Это делает некоторое исчисление и очень просто в использовании.

Scilab www.scilab.org/download/index_download.php Scilab является числовой системой вычисления, подобной Matlab или Simulink. Scilab включает сотни математических функций, и программы с различных языков (таких как C или Фортран) могут быть добавлены в интерактивном режиме.

mathstudio mathstudio.sourceforge.net интерактивный редактор формул и пошаговый решатель.

Библиотека:

Броненосец Библиотека C++ http://arma.sourceforge.net/ Броненосец Библиотека C++ стремится обеспечивать эффективную основу для операций линейной алгебры (матричная и векторная математика) при наличии простого и простого в использовании интерфейса.

Блиц ++ Блиц http://www.oonumerics.org/blitz/ ++ является библиотекой класса C++ для научных вычислений

BigInteger C# http://msdn.microsoft.com/pt-br/magazine/cc163441.aspx

libapmath http://freshmeat.net/projects/libapmath Добро пожаловать в домашнюю страницу APMath-проекта. Целью этого проекта является реализация произвольной точности C ++-library, который находится в самом удобном употреблении, это означает, что все операции реализованы как перегрузки оператора, именование является главным образом тем же как тем из.

libmat ЦИНОВКА http://freshmeat.net/projects/libmat является C++ математическая библиотека шаблонного класса. Пользуйтесь этой библиотекой для различных операций над матрицей, находя корни многочленов, решая уравнения, и т.д. Библиотека содержит только заголовочные файлы C++, таким образом, никакая компиляция не необходима.

animath http://www.yonsen.bz/animath/animath.html Animath является библиотекой Finite Element Method, полностью реализованной в C++. Это подходит для моделирования взаимодействия жидкой структуры, и это математически основано на четырехгранных элементах высшего порядка.

4
ответ дан 4 December 2019 в 23:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: