Как стать автором
Обновить

Необычная система умножения

Время на прочтение3 мин
Количество просмотров2.6K
Всегда приятно решить задачу. Но еще интереснее ее придумать. Например такую.

Кроме обычной, есть «необычная» система умножения. Вот несколько примеров из этой системы.

$3\cdot4=148\\ 3\cdot5=185\\ 3\cdot7=259\\ 3\cdot8=296\\ 3\cdot9=333\ $



Вопрос. Чему равно $1\cdot1$ в «необычной» системе умножения?
Задача имеет однозначное решение в десятичной системе исчисления.Не уверен, что эти равенства встречаются каждый день. Но многие их получали. И это именно умножение.

Надо признать, что реакция на вопрос была похожа на ту, которую встретил О.Бендер, зайдя на привозной рынок.
В руке молодой человек держал астролябию. «О баядерка, ти-ри-рим, ти-ри-ра!» — запел он, подходя к привозному рынку.

Тут для него нашлось много дела. Он втиснулся в шеренгу продавцов, торговавших на развале, выставил вперед астролябию и серьезным голосом стал кричать:

— Кому астролябию? Дешево продается астролябия! Для делегаций и женотделов скидка.

Неожиданное предложение долгое время не рождало спроса.

Более того, автора заподозрили в том, что он в тайне ненавидит окружающих. Что абсолютно не соответствует действительности. Автор не избегает ни вина, ни застольной беседы. Еще раз повторю, приведенные равенства многие встречали при изучении математики. Только записаны они были иначе. Например, так:

$\frac{1}{3}\cdot\frac{5}{9}=\frac{5}{27}$


Или, так:

$.(3)*.(5)=.(185)$



Если построить таблицу умножения для чисел $\frac{x}{9} и \frac{y}{9}$, где x и y лежат в диапазоне 1...9, то для большинства пар длина периода равна 9 и его значение определяется произведением $12345679\cdot x\cdot y$. Исключения составляют пары, когда цифры в числителе делятся на 3. Для таких чисел длина периода будет короче, и именно такие случаи были приведены в качестве примеров «необычного» умножения. Если перемножить произведения из левой части примеров в начале статьи и число 12345679, то мы получим «красивые периодические» числа:

$12\cdot 12345679=148 148 148\\ 15\cdot 12345679=185 185 185\\ 21\cdot 12345679=259 259 259$


Теперь понятно чему равно $1\cdot 1$ в «необычной» системе умножения. Ответ $012345679$. Отмечу, что определение длины периода десятичного представления простой дроби не является выдуманной задачей. Этим занимались и Ф.Гаусс и один из братьев Бернулли.
В продолжение темы процитирую Козьму Пруткова:
Бросая в воду камешки, смотри на круги, ими образуемые: иначе такое бросание будет пустою забавой.

Чем может быть полезно изучение периодов обратных простых чисел? В 1903 году американский математик Фрэнк Нельсон Коул сделал известный доклад на заседании Американского математического общества, предъявив делители числа Мерсенна $2^{67}-1$, или M67. Минимальный множитель в найденном им разложении равен 193 707 721. Функция primepi для аргумента 193 707 721 равна 10 749 692. Можно ли уменьшить количество чисел кандидатов?
Один из способов подсказывает приведенный пример с «необычным» умножением. Так как, согласно Малой теореме Ферма $2^{p-1}-1$ делится на p, где p — простое число, и это же число является делителем для $2^{67}-1$, то список простых чисел мы можем ограничить числами вида $67\cdot{K}+1$. Какой это нам даст выигрыш?
Ниже приведена статистика по количеству простых чисел данного вида для различных верхних границ:
1000 — > 1
10 000 ->20
100 000 ->142
1 000 000 -> 1 195
Предположим, что для 200 000 000 таких чисел будет, примерно, 200 000, что уменьшает количество кандидатов в 50 раз. Но это небольшой выигрыш. Коул показал, что числа кандидаты имеют вид $1608\cdot{K}+1$ и $1608\cdot{K}+1207$. Для интервала 2...100 000 таких чисел 38, для 2...1 000 000 их количество равно 300.
Ниже приводится код, который я использовал в своих опытах c «необычным» произведением.

Function UnUsualMult(A,B)
denumA=0;
n=A;r=n%10;
while n<>0 do
denumA=denumA*10+9;
n=(n-r)/10;
r=n%10;
enddo;

denumB=0;
n=B;r=n%10;
while n<>0 do
denumB=denumB*10+9;
n=(n-r)/10;
r=n%10;
enddo;

AB=1;denum=1;
if A<>denumA then
denum=denum*denumA;
AB=AB*A;
endif;

if B<>denumB then
denum=denum*denumB;
AB=AB*B;
endif;

if denum=1 then
result=""+AB;
return result;
endif;


result="";num=AB*10;
while TRUE do

while num<denum цикл
num=num*10;
result=result+«0»;
if num=AB then
break;
endif;
конеццикла;

r=num%denum;
if r=AB then
result=result+(num-r)/denum;
break;
else
result=result+(num-r)/denum;
endif;
num=r*10;
if num=AB then
result=result+«0»;
break;
endif;
enddo;

return result;
EndFunction
Теги:
Хабы:
Всего голосов 11: ↑0 и ↓11-11
Комментарии7

Публикации