Слово «алгоритм» происходит от имени великого Персидского учёного Мухаммеда аль-Хорезми́, жившего в первой половине IX ве́ка (точные годы его жизни неизвестны, но считается, что он родился около 780 года, а умер около 850). «Аль-Хорезми» означает «из Хорезма» (исторической области в нынешнем Узбекистане, центром которой был город Хива).
Около 825 года аль-Хорезми написал сочинение, в котором впервые дал описание придуманной в Индии позиционной десятичной системы счисления. К сожалению, арабский оригинал его книги не сохранился, так что её оригинальное название нам неизвестно. Аль-Хорезми сформулировал правила вычислений в новой системе и, вероятно, впервые использовал цифру 0 для обозначения пропущенной позиции в записи числа (её индийское название арабы перевели как as-sifr или просто sifr, отсюда такие слова, как цифра и шифр). Приблизительно в это же время индийские цифры начали применять и другие арабские учёные. В первой половине XII века книга аль-Хорезми в латинском переводе проникла в Европу. Переводчик, имя которого до нас не дошло, дал ей название «Algoritmi de numero Indorum» («Индийское искусство счёта, сочинение Аль-Хорезми»).
Таким образом, мы видим, что латинизированное имя аль-Хорезми было вынесено в заглавие книги, и сегодня ни у кого нет сомнений, что слово «алгоритм» попало в европейские языки именно благодаря этому сочинению. Однако вопрос о его смысле длительное время вызывал ожесточённые споры. На протяжении многих веков происхождению слова давались самые разные объяснения.
Одни выводили algorism из греческих algiros (больной) и arithmos (число). Из такого объяснения не очень ясно, почему числа именно «больные». Или же лингвистам больными казались люди, имеющие несчастье заниматься вычислениями? Своё объяснение предлагала и знаменитая энциклопедия Брокгауза и Ефрона (1890 год). В ней алгорифм (кстати, до революции использовалось написание алгориѳм, через «фиту») производится «от арабского слова Аль-Горетм, т. е. корень». Разумеется, эти объяснения вряд ли можно счесть убедительными.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>
#include <stdlib.h> // предоставляет rand() и srand()
#include <time.h> // предоставляет time()
// число строк в массиве:
#define M 5
// длина каждой строки:
#define N 7
int main ()
{
srand(time(NULL)); // новая точка отсчета рнд
int B[M][N]; // массив
int cnt; // число отрицательных
int i, j;
// заполняем массив случайными:
for (i=0; i<M; i++)
for (j=0; j<N; j++)
B[i][j] = rand() %21 - 10;
// считаем отрицательные:
for (i=0; i<N; i++)
{
cnt = 0; // перед каждым новым столбцом сбрасываем счетчик отрицательных
for (j=0; j<M; j++)
if (B[i][j] < 0) cnt++;
printf("column #%i, count is: %d\n", i, cnt);
}
return 0; // конец программы
2N² + 1N¹ + 2N° = 57
2N² + N + 2 = 57
Решаем квадратное уравнение:
2N² + N + 2 - 57 = 0
2N² + N + - 55 = 0
D= 1+4*2*55 = 441
N₁ = (-1+21)/4 = 5
N₂ = (-1-21)/4 = -5.5
Второе значение не подходит (отрицательное), значит N = 5
ответ: основание системы счисления равно 5