Задать вопрос
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    Koren1
    @Koren1 Автор вопроса
    mayton2019,
    Давай автор заканчивай скорее с Ферма
    Да, вы снова правы. Нельзя так долго не понимать. Во-первых, стыдно, а во-вторых когда кто-то, долго не понимает учителю обычно матюкаться хочется - не по христиански это - да - заканчиваем.

    У тебя на очереди - эллиптические кривые.
    Я уже доказал теорему Ферма с помощью эллиптических кривых. Зашел на сайт Wolfram Alpha, сказал калькулятору:
    elliptic curve a^3+b^3=c^3 или a^3+b^3=c^3 или Power[a,3]+Power[b,3]=Power[c,3] или a^3 + b^3 - c^3 = 0

    И он посчитал:
    a = 0, c = b
    b = 0, c = a
    b = -a, c = 0

    Wataru,
    Перезапуск - не такая частая операция
    У меня только что электричества не было, это знак наверное - пора заканчивать.

    Посмотреть на предыдущий вывод до перезагрузки, взять максимальное a
    Да, конечно посмотрю, по тестирую. Но по этому вопросу я вас больше мучить не буду. Спасибо вам огромное, за помощь и терпение!!!
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    Koren1
    @Koren1 Автор вопроса
    то запускаетесь опять от 1
    По какому признаку мне понять, что нужно запуститься с 1?

    Да, первые 10000 пар вы просмотрите опять
    Неприятно конечно, но потом если что из базы удалю дубликаты.

    то начало внешнего цикла можно сделать 2476
    Как вы определяете алгоритм, когда с 1 начинать, а когда с 2476?

    я привел код
    Спасибо!!! Приведите пожалуйста несколько примеров (циклов, интервалов) чтобы было понятно. Код без интервалов теряет смысл. Вопрос не про код, формула и код могут быть разными, вопрос именно про интервалы. Вы показали один интервал, одного интервала мало, меня интересует разбивка интервалов.
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    Koren1
    @Koren1 Автор вопроса
    Wataru, Как же сложно правильно задавать интервал, не уверен, что все правильно понял, я все еще провожу эксперименты. Извините, но я еще не осознал, как их правильно указывать.
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    Koren1
    @Koren1 Автор вопроса
    Wataru, Если я правильно понял нужно вначале запустить такой цикл:
    begin, end = 1, 20001
    6³+8³=9³-1 | 216+512=729-1
    8³+6³=9³-1 | 512+216=729-1
    71³+138³=144³-1 | 357911+2628072=2985984-1
    135³+138³=172³-1 | 2460375+2628072=5088448-1
    138³+71³=144³-1 | 2628072+357911=2985984-1
    138³+135³=172³-1 | 2628072+2460375=5088448-1
    236³+1207³=1210³-1 | 13144256+1758416743=1771561000-1
    242³+720³=729³-1 | 14172488+373248000=387420489-1
    372³+426³=505³-1 | 51478848+77308776=128787625-1
    426³+372³=505³-1 | 77308776+51478848=128787625-1
    426³+486³=577³-1 | 77308776+114791256=192100033-1
    486³+426³=577³-1 | 114791256+77308776=192100033-1
    566³+823³=904³-1 | 181321496+557441767=738763264-1
    575³+2292³=2304³-1 | 190109375+12040481088=12230590464-1
    720³+242³=729³-1 | 373248000+14172488=387420489-1
    791³+812³=1010³-1 | 494913671+535387328=1030301000-1
    812³+791³=1010³-1 | 535387328+494913671=1030301000-1
    823³+566³=904³-1 | 557441767+181321496=738763264-1
    1124³+5610³=5625³-1 | 1420034624+176558481000=177978515625-1
    1207³+236³=1210³-1 | 1758416743+13144256=1771561000-1
    1851³+8675³=8703³-1 | 6341898051+652842546875=659184444927-1
    1938³+2820³=3097³-1 | 7278825672+22425768000=29704593673-1
    1943³+6702³=6756³-1 | 7335308807+301032420408=308367729216-1
    1943³+11646³=11664³-1 | 7335308807+1579539014136=1586874322944-1
    2196³+5984³=6081³-1 | 10590025536+214276603904=224866629441-1
    2292³+575³=2304³-1 | 12040481088+190109375=12230590464-1
    2676³+3230³=3753³-1 | 19162771776+33698267000=52861038777-1
    2820³+1938³=3097³-1 | 22425768000+7278825672=29704593673-1
    3230³+2676³=3753³-1 | 33698267000+19162771776=52861038777-1
    3318³+16806³=16849³-1 | 36528273432+4746714134616=4783242408049-1
    5610³+1124³=5625³-1 | 176558481000+1420034624=177978515625-1
    5984³+2196³=6081³-1 | 214276603904+10590025536=224866629441-1
    6702³+1943³=6756³-1 | 301032420408+7335308807=308367729216-1
    7676³+11903³=12884³-1 | 452277411776+1686433811327=2138711223104-1
    8675³+1851³=8703³-1 | 652842546875+6341898051=659184444927-1
    10866³+17328³=18649³-1 | 1282948141896+5202898071552=6485846213449-1
    11646³+1943³=11664³-1 | 1579539014136+7335308807=1586874322944-1
    11903³+7676³=12884³-1 | 1686433811327+452277411776=2138711223104-1
    16806³+3318³=16849³-1 | 4746714134616+36528273432=4783242408049-1
    17328³+10866³=18649³-1 | 5202898071552+1282948141896=6485846213449-1

    Потом такие циклы:
    1, 1001
    823, 2001
    823, 3001
    2820, 4001
    2820, 5001
    2820, 6001
    2820, 7001
    2820, 8001
    2820, 9001
    2820, 10001
    2820, 11001
    2820, 12001
    11903, 13001
    11903, 14001
    11903, 15001
    11903, 16001
    11903, 17001
    11903, 18001
    11903, 19001
    11903, 20001

    Потому что:
    begin, end = 1, 1001
    6³+8³=9³-1 | 216+512=729-1
    8³+6³=9³-1 | 512+216=729-1
    71³+138³=144³-1 | 357911+2628072=2985984-1
    135³+138³=172³-1 | 2460375+2628072=5088448-1
    138³+71³=144³-1 | 2628072+357911=2985984-1
    138³+135³=172³-1 | 2628072+2460375=5088448-1
    242³+720³=729³-1 | 14172488+373248000=387420489-1
    372³+426³=505³-1 | 51478848+77308776=128787625-1
    426³+372³=505³-1 | 77308776+51478848=128787625-1
    426³+486³=577³-1 | 77308776+114791256=192100033-1
    486³+426³=577³-1 | 114791256+77308776=192100033-1
    566³+823³=904³-1 | 181321496+557441767=738763264-1
    720³+242³=729³-1 | 373248000+14172488=387420489-1
    791³+812³=1010³-1 | 494913671+535387328=1030301000-1
    812³+791³=1010³-1 | 535387328+494913671=1030301000-1
    823³+566³=904³-1 | 557441767+181321496=738763264-1

    begin, end = 823, 3001
    1938³+2820³=3097³-1 | 7278825672+22425768000=29704593673-1
    2820³+1938³=3097³-1 | 22425768000+7278825672=29704593673-1

    begin, end = 2820, 12001
    7676³+11903³=12884³-1 | 452277411776+1686433811327=2138711223104-1
    11903³+7676³=12884³-1 | 1686433811327+452277411776=2138711223104-1

    Простите, но у меня опять целый землекоп не получился.
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    Koren1
    @Koren1 Автор вопроса
    Wataru, Спасибо!!! Можно пример? Предположим я остановился на интервале: begin, end = 1, 1001. Какой следующий предел мне указывать?
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    Koren1
    @Koren1 Автор вопроса
    mayton2019,
    Ферштейн?
    Страшно сказать что не verstehen. Обычно когда часто говоришь, что глупс, у собеседника начинается агрессия. По этому не признаюсь.

    наискосок
    Из вариантов: вдоль, в поперек, по диагонали или по частям, я предпочитаю даже не нож, а мясорубку, т.е. по частям.
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    Koren1
    @Koren1 Автор вопроса
    Wataru,
    Ничего вы не срезали. А всего-лишь чуть-чуть поменяли порядок перебора все тех же пар чисел, сильно усложнив код
    Перепишите, пожалуйста код, как будет лучше. Как по мне вы говорите загадками и скорей всего я ответ на загадку не найду.

    mayton2019,
    Почитай вообще литературу как тестируется ПО. Краевые тесты. Property-based testing
    Спасибо.

    Ты пишешь в принципе получилось. А как ты докажешь что учел ВСЕ сочетания целых чисел?
    Я же сделал 40 циклов, раньше была недостача после маленьких циклов, теперь ее нет:
    6³+8³=9³-1 | 216+512=729-1 | 1 1001 1 1001
    8³+6³=9³-1 | 512+216=729-1 | 1 1001 1 1001
    71³+138³=144³-1 | 357911+2628072=2985984-1 | 1 1001 1 1001
    135³+138³=172³-1 | 2460375+2628072=5088448-1 | 1 1001 1 1001
    138³+71³=144³-1 | 2628072+357911=2985984-1 | 1 1001 1 1001
    138³+135³=172³-1 | 2628072+2460375=5088448-1 | 1 1001 1 1001
    242³+720³=729³-1 | 14172488+373248000=387420489-1 | 1 1001 1 1001
    372³+426³=505³-1 | 51478848+77308776=128787625-1 | 1 1001 1 1001
    426³+372³=505³-1 | 77308776+51478848=128787625-1 | 1 1001 1 1001
    426³+486³=577³-1 | 77308776+114791256=192100033-1 | 1 1001 1 1001
    486³+426³=577³-1 | 114791256+77308776=192100033-1 | 1 1001 1 1001
    566³+823³=904³-1 | 181321496+557441767=738763264-1 | 1 1001 1 1001
    720³+242³=729³-1 | 373248000+14172488=387420489-1 | 1 1001 1 1001
    791³+812³=1010³-1 | 494913671+535387328=1030301000-1 | 1 1001 1 1001
    812³+791³=1010³-1 | 535387328+494913671=1030301000-1 | 1 1001 1 1001
    823³+566³=904³-1 | 557441767+181321496=738763264-1 | 1 1001 1 1001
    236³+1207³=1210³-1 | 13144256+1758416743=1771561000-1 | 1 1001 1001 2001
    575³+2292³=2304³-1 | 190109375+12040481088=12230590464-1 | 1 1001 2001 3001
    1207³+236³=1210³-1 | 1758416743+13144256=1771561000-1 | 1001 2001 1 1001
    1938³+2820³=3097³-1 | 7278825672+22425768000=29704593673-1 | 1001 2001 2001 3001
    1124³+5610³=5625³-1 | 1420034624+176558481000=177978515625-1 | 1001 2001 5001 6001
    1943³+6702³=6756³-1 | 7335308807+301032420408=308367729216-1 | 1001 2001 6001 7001
    1851³+8675³=8703³-1 | 6341898051+652842546875=659184444927-1 | 1001 2001 8001 9001
    1943³+11646³=11664³-1 | 7335308807+1579539014136=1586874322944-1 | 1001 2001 11001 12001
    2292³+575³=2304³-1 | 12040481088+190109375=12230590464-1 | 2001 3001 1 1001
    2820³+1938³=3097³-1 | 22425768000+7278825672=29704593673-1 | 2001 3001 1001 2001
    2676³+3230³=3753³-1 | 19162771776+33698267000=52861038777-1 | 2001 3001 3001 4001
    2196³+5984³=6081³-1 | 10590025536+214276603904=224866629441-1 | 2001 3001 5001 6001
    3230³+2676³=3753³-1 | 33698267000+19162771776=52861038777-1 | 3001 4001 2001 3001
    3318³+16806³=16849³-1 | 36528273432+4746714134616=4783242408049-1 | 3001 4001 16001 17001
    5610³+1124³=5625³-1 | 176558481000+1420034624=177978515625-1 | 5001 6001 1001 2001
    5984³+2196³=6081³-1 | 214276603904+10590025536=224866629441-1 | 5001 6001 2001 3001
    6702³+1943³=6756³-1 | 301032420408+7335308807=308367729216-1 | 6001 7001 1001 2001
    7676³+11903³=12884³-1 | 452277411776+1686433811327=2138711223104-1 | 7001 8001 11001 12001
    8675³+1851³=8703³-1 | 652842546875+6341898051=659184444927-1 | 8001 9001 1001 2001
    10866³+17328³=18649³-1 | 1282948141896+5202898071552=6485846213449-1 | 10001 11001 17001 18001
    11646³+1943³=11664³-1 | 1579539014136+7335308807=1586874322944-1 | 11001 12001 1001 2001
    11903³+7676³=12884³-1 | 1686433811327+452277411776=2138711223104-1 | 11001 12001 7001 8001
    16806³+3318³=16849³-1 | 4746714134616+36528273432=4783242408049-1 | 16001 17001 3001 4001
    17328³+10866³=18649³-1 | 5202898071552+1282948141896=6485846213449-1 | 17001 18001 10001 11001
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    Koren1
    @Koren1 Автор вопроса
    mayton2019,
    я ума не приложу какие запросы тебе там
    нужны и почему ты просто не мог поискать это в тексте

    Да, я тоже ума не приложу, может в будущем понадобится, ну скажем захочется убрать повторы или нарисовать график. Ну не знаю, это же данные, а не художественная литература.

    Сделай один Range полным-полным перебором. Потом внеси оптимизацию

    Лучше 1 раз увидеть, чем 100 раз услышать. Пока что я вас не понимаю. Обычно это происходит так, к примеру с Bing AI. Он 100 раз пытается объяснить, я 100 раз не понимаю. Потом терпение заканчивается, он уходит в цикл, повторяет одно и тоже. Я ему говорю, чтобы он не издевался, что мне больно. Он обижается, и получается, что я еще и виноват.

    Здесь срезать углы не получиться

    В принципе получилось же с помощью itertools.product. Теперь вопрос в другом - сделать лучше.
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    Koren1
    @Koren1 Автор вопроса
    mayton2019,
    Долгоиграющие джобы можно разбить на итерации. Или пачки. В данном случае пачкой будут Ranges.

    Я так и делаю, а как вы разбиваете?

    И выбрать такой интервал чтоб не сильно долго работала пачка (5 минут) и в тоже время чтоб можно было оперативно прервать без жалости.

    Я так и планирую, когда программа будет дописана, буду экспериментировать с размером интервала.

    И завести табличку ranges. Пачка троек отработала - закоммитил.

    Табличка уже есть.

    При следующем запуске мы начинаем не с начала а со следующей пачки.

    У меня так и есть, пока что только для формулы a³+b³=c³-1.

    Честно я-бы для этой задачи базами не парился. Тут хвататет CSV файлов.

    В чем преимущество? CSV - это Microsoft Excel или LibreOffice Calc, а это значит, что нужно долго ждать, когда ну скажем LibreOffice Calc откроется, чтобы посмотреть на табличку, плюс CSV еще и конвертировать нужно, т.е. плюс еще какое-то время. DB Browser for SQLite открывается быстрее. LibreOffice Calc любит округлять, не приятно будет.

    Приведенный вами код непонятно зачем интервалы использует. С тем же успехом можно гнать просто 2 цикла от 1 до 20000 для a и b.
    Мне же нужно было попробовать один большой интервал и много маленьких, чтобы увидеть потери.

    mayton2019, Wataru, Можете переписать программу, так, как будет правильно, а не так, как у меня?
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    Koren1
    @Koren1 Автор вопроса
    Wataru, Спасибо!!! Попросил искусственный интеллект Bing AI сделать правильные интервалы для формулы a³+b³=c³+1. Не получилось, наверно потому, что нужно интервал начинать с двойки. А с двойки начинать приходится, потому что любое число плюс 1 равно любому числу плюс один. Тогда пришлось попросить написать программу для a³+b³=c³-1. В принципе у меня уже все получается, но если будут предложения, я буду очень рад их услышать.
    # Это программа на Python
    import itertools
    
    n= 3
    
    # Задаем интервалы значений для a,b,c
    intervals = [(1 + i * 1000, 1001 + i * 1000) for i in range(20)]
    
    # Создаем все возможные комбинации интервалов для a и b
    interval_pairs = itertools.product(intervals, repeat=2)
    # Для каждой пары интервалов
    for (a_begin, a_end), (b_begin, b_end) in interval_pairs:
        # Для каждого значения a в интервале
        for a in range(a_begin, a_end+1):
            an = a ** n
            c = a; cn = an
            # Для каждого значения b в интервале
            for b in range(b_begin, b_end+1):
                anbn = an + b ** n
                while anbn > cn:
                    c += 1
                    cn = (c ** n)-1
                if anbn == cn: # Bingo!
                    print(f'{a}³+{b}³={c}³-1 | {a**3}+{b**3}={c**3}-1 | {a_begin} {a_end} {b_begin} {b_end}')
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    Koren1
    @Koren1 Автор вопроса
    Alexandroppolus, Значит не буду просить компьютер про слишком большой цикл, подожду когда досчитает и перезагружу. Странно, у меня такое ощущение, что кроме меня на компьютере никто формулы не считает. Как вы задаете интервал, когда считаете формулы на компьютере?
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    Koren1
    @Koren1 Автор вопроса
    Alexandroppolus, После обновления операционной системы рекомендуется перезагружать, что тут поделаешь? Не хотел весь код программы показывать, опасаюсь, что это не всем понравится, но наверно лучше показать. Я храню результаты в базе, вот полный код программы:
    # Это программа на Python
    # Импортируем модуль sqlite3
    import sqlite3
    
    # Подключение к базе данных SQLite
    conn = sqlite3.connect('solutions1.db')
    
    # Создаем таблицу solutions в базе данных
    cur = conn.cursor()
    cur.execute("CREATE TABLE IF NOT EXISTS solutions (a INT, b INT, c INT, a_cube INT, b_cube INT, c_cube INT, begin INT, end INT)")
    
    n= 3
    
    # Задаем интервалы значений для a,b,c
    intervals = [(2, 20001)]
    #intervals = [(2, 1001), (1000, 2001), (2000, 3001), (3000, 4001), (4000, 5001), (5000, 6001), (6000, 7001), (7000, 8001), (8000, 9001), (9000, 10001), (10000, 11001), (11000, 12001), (12000, 13001), (13000, 14001), (14000, 15001), (15000, 16001), (16000, 17001), (17000, 18001), (18000, 19001), (19000, 20001)]
    
    # Перебираем значения из списка intervals и для каждого интервала генерируем значения a,b,c такие,
    # что a³+b³=c³+1. Если такие значения найдены, то они выводятся на экран и записываются в таблицу solutions.
    for Begin, End in intervals:
        for a in range(Begin, End+1):
            an= a ** n
            c= a; cn= an
            for b in range(a+1, End+1):
                anbn= an + b ** n
                while anbn > cn:
                    c+= 1
                    cn= (c ** n)+1
                if anbn == cn: # Bingo!
                    print(f'{a}³+{b}³={c}³+1 | {a**3}+{b**3}={c**3}+1 | {Begin} {End}')
    
                    # Записываем решение и пределы в таблицу solutions
                    cur.execute("INSERT INTO solutions VALUES (?, ?, ?, ?, ?, ?, ?, ?)", (a, b, c, a**3, b**3, c**3, Begin, End))
    
    # Сохраняем изменения в базе данных
    conn.commit()
    
    # Закрываем соединение с базой данных SQLite
    conn.close()
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    Koren1
    @Koren1 Автор вопроса
    Alexandroppolus, Не понимаю, добавьте детали, пожалуйста. Что такое внешний цикл? Что значит - отработать всю конструкцию? 20000 считает всего лишь за пару минут, можно немного и подождать, пока закончится интервал, а потом перезагрузить компьютер. Другое дело, что интервал непрерывный, и если я перезагружу компьютер, что мне тогда делать, начинать сначала?
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    Koren1
    @Koren1 Автор вопроса
    Я думаю, вам стоит вообще внешний цикл убрать и всегда работать только с одним интервалом.
    А если я захочу перезагрузить компьютер, а интервал ещё не досчитался?

    Можно чуть чуть ускорить решение, если не увеличивать c в цикле, а вычислить его по формуле (an+bn-1)^(1/n)
    Спасибо, попробую, надеюсь получиться. Вначале хочу разобраться с интервалом.

    Какая-нибудь функция pow вам поможет
    Я экспериментировал с pow и math.pow, оказалось, что ** работает быстрее.

    не из заданного интервала
    Да, я знаю, можете переписать мою программу для создания интервала, а то для меня это сложно. Всего одну строчку:
    intervals = [(10000 + i * 1000, 11001 + i * 1000) for i in range(10)]
    print(intervals)
  • Какое решение уравнения x^3 + y^3 = z^3 в дробных числах?

    Koren1
    @Koren1 Автор вопроса
    mayton2019, Нет, мне и сформулировать то его не под силу для полноценного вопроса. Да и устал я от математики, сложно это для меня, пару дней пытался напряженно думать, а ощущение, что мешки с цементом таскал - отдохну немного. Очень много неизвестных для меня слов, не понимать - стыдно. Хватит мне и того что есть, позвольте еще раз сказать - СПАСИБО!!!
  • Какое решение уравнения x^3 + y^3 = z^3 в дробных числах?

    Koren1
    @Koren1 Автор вопроса
    mayton2019, Спасибо!!! На GitHub забрал, авторство указал.
    Можете убрать randomность? У меня не получается, интеллект отказывается, у i/20 большой зазор. Можете вычислить кубический корень из вещественного числа методом половинного деления или Ньютона?
  • Какое решение уравнения x^3 + y^3 = z^3 в дробных числах?

    Koren1
    @Koren1 Автор вопроса
    mayton2019,
    Хотя кубический корень из вещественного числа можно вычислить методом половинного деления или ньютона.
    Нет, я не справлюсь с домашним заданием. Давайте подождем, мало ли, может кто-то придет и решит.
  • Какое решение уравнения x^3 + y^3 = z^3 в дробных числах?

    Koren1
    @Koren1 Автор вопроса
    mayton2019, В поиске написал "википедия логарифм и экспонента формулы возведения числа x в вещественную степень y" Google пишет: Результатов: примерно 884. Мне какой именно выбрать?
  • Какое решение уравнения x^3 + y^3 = z^3 в дробных числах?

    Koren1
    @Koren1 Автор вопроса
    mayton2019, Нет, но очень понравилась. У нее есть название? Хочется про нее больше узнать.