Как найти все возможные варианты суммирования и вычитания натуральных чисел с минимальным хранением начальных?
С двумя любыми натуральными числами можно сделать сложение или вычитание. Единственное нельзя суммировать и вычитать с самого себя.
Будем считать их начальными.
К примеру. Два числа
2 и 3 , с этой пары будут известны числа
2+3 = 5
3-2 = 1
Отрицательные числа не учитываются.
Допустим добавляем ещё одну начальную 8, тогда у нас получаются такие дополнительные варианты.
8+2 = 10
8+3 = 11
8-2 = 6
8-3 = 5
То есть на данный момент мы знаем такую последовательность.
1, 2, 3, 5, 6, 8, 10, 11
Где начальные 2, 3, 8
При этом неизвестны 4, 7, 9
Так вот задача заполнить полностью ряд простых чисел, с хранением наименьшего кол-ва начальных. И что бы было наименьшее кол-во пересечений.
Под пересечением имеется ввиду такое.
Добавляем начальное число 12, чтобы найти 4, получаем такие варианты
12+2 = 14
12+3 = 15
12+8 = 20
12-2= 10 (пересечение)
12-3= 9
12-8= 4
4, 9 мы нашли, но 10 получается уже пересечением, двух возможных комбинаций.
Можно конечно это все делать перебором, с хранением матрицы, и это я реализовывал до определенных размеров. Но заполнение нужно для больших чисел от 100 бит и далее. Никакой памяти не хватит держать такую матрицу, даже если усекать найденное начало.
Может есть какой логарифм или алгоритм для нахождения таких чисел?
Я пробовал ряды простых чисел разных алгоритмов, ничего не подходит.
Бьюсь уже давненько над задачей.
Разработать непозиционную систему счисления для представления любого простого числа наименьшим числом символов системы.
Непозиционная в качестве примера - это римская. I/II/III символы. Или система фибоначчи 1,1,2,3,5,8. В твоём случае символ включает в себя еще и знак плюс-минус.
Поскольку множество простых чисел - бесконечно то и твоя задача как-бы не имеет логического финала. Сколько-бы ты не придумывал слагаемых, все равно я могу указать некое следующее число которое будет не укладываться в твой числовой ряд.
Поэтому задание тут еще сложнее чем непозиционная система.
Вообще получается такая зависимость.
При известном одном числе, идет перекрытие 1, при известных 2, перекрытие 4,
1 = 1
2 = 4
3 = 9
4 = 16
5 = 25
6 = 36
И т.д. То есть кол-во известных числе в квадрате, дает максимально возможное кол-во перекрытых чисел.