Как вы знаете, количество минут в часе, и количество секунд в минуте равно 60. А количество градусов в круге 360. Почему?
Исторически данное количество осталось от древних египтян, а те - от вавилонян. Древние вавилоняне пользовались шестидесятиричной системой счисления [1]. То есть для каждого числа от 0 до 59 у них существовал определенный символ (набор совместно применяемых символов, если быть точнее). Для работы с дробными числами применялись шестидесятиричные дроби.
Почему древние выбрали для основания своей системы счисления 60?
По идее древних, основание должно быть таким, чтобы предметы, выраженные числом, можно было делить как можно на большее число различных чисел без остатка.
На целых числах это сложно объяснить, а вот на дробных можно объяснить просто. Если у нас имеется запас зерна, расфасованных в 45 мешков, то как поровну разделить на 2? Если у нас имеется тот же запас зерна, расфасованный в 30 мешков, то на 2 разделить уже проще, но как разделить это зерно на 4 части? Уловили уже проблему? Вавилонцы не знали еще десятичных дробей, не умели выполнять деление столбиком и вообще имели еще большие проблемы с математикой в теоретическом плане.
Для строительства и управления государством требовался большой объем работ по планированию и бухгалтерии. Необходимо было точно распределять ресурсы.
Вавилонцы нашли довольно смелое решение. Они выбрали в качестве системы счисления 60.
Теперь группу в 60 воинов можно было просто распределять на группы.
Круг, поделенный на 60 * 6 можно было делить на множество углов. Ну и так далее. Да и разделить круг карандашиком на 360 намного проще, чем на 100 (попробуйте сами).
Теперь самое интересное.
Почему именно 60? Какие есть числа, которые можно положить в качестве системы счисления, у которых много делителей?
С увеличением чисел количество делителей в подходящих числах увеличивается. 4 - 2 делителя, 5 - 1, 6 - уже 3, 7 снова 1 и так далее.
Давайте попробуем перебрать числа и посчитать. Какая будет зависимсть?
Решать будем на MS SQL. SQL не язык программирования, но такую задачу можно решить.
IF OBJECT_ID('tempdb..#num', 'U') IS NOT NULL
DROP TABLE #num
CREATE TABLE #num ( num int )
SET NOCOUNT ON
DECLARE @num_cur int
SET @num_cur = 2
WHILE @num_cur < 8000 BEGIN
INSERT INTO #num VALUES (@num_cur)
SET @num_cur = @num_cur + 1
END
SET NOCOUNT OFF
print 'делители по основаниям'
SELECT m.num AS num , d.num AS delitel
FROM #num m
INNER JOIN #num d ON
(d.num < m.num)
AND (m.num % d.num = 0)
AND (m.num / d.num <> 1)
ORDER BY num, delitel
print 'количества делителей по основаниям'
SELECT m.num AS num , COUNT(d.num) AS delitel_count
FROM #num m
INNER JOIN #num d ON
(d.num < m.num)
AND (m.num % d.num = 0)
AND (m.num / d.num <> 1)
GROUP BY m.num ORDER BY num
DROP TABLE #num
Результаты оформляем в диаграмму.
Глядя на эту диаграмму видим, что 60 - это минимальное число, у кторого имеются максимальное число делителей (10), находящееся в разумных пределах - до сотни. Больше него вплоть до 12 количесто делителей не увеличиваются.
Если просчитать до 8000, то получим следующую картину:
Как видим, следующий подходящий кандитать - число 360, 22 делителя, после него до 720 количество делителей не увеличивается.
Впрочем, после 60 все подходящие кандидаты получаются умножением 60 на определенное число.
120 = 60 *2
180 = 60 *3
240 = 60 * 4
360 = 60 * 6 (22 делителя)
720 = 60 * 7 (28 делителей)
840 = 60 * 8 (30 делителей)
1260 = 60 * 21 (34 делителя)
1680 = 60 * 28 (38 делителей)
2520 = 60 * 42(46 делителей)
3600 = 60 * 60(43 делителя) - провал почему то
5040 = 60 * 84 (58 делителей)
7560 = 60 * 126(62 делителя)
Вот так.
Использованные источники