Поставим перед собой задачу: найти НОД (наибольший общий делитель) двух натуральных чисел A и B. Чтобы решить ее, нужно понять, что значит найти НОД. На самом деле мы должны найти такое число D, что A и B делятся на него без остатка, при этом D является максимальным из подходящих под последнее условие чисел. Перепишем в виде формулы: пусть A и B - натуральные числа, gcd(A, B) - это их НОД, а D1, D2, …, Dn - это их общие делители, тогда gcd(A, B) = max{D1, D2, … Dn}, где для i=1..n выполняется A mod Di = 0 и B mod Di = 0, где A mod B - остаток от деления A на B. Теперь напишем первую версию нашего алгоритма (на языке C): Становится очевидно, что перебирать все возможные делители - это долго, поэтому подумаем в сторону сокращения времени поиска. И тут возникает мысль: "А что, если представить числа A и B в качестве высоты и ширины какой-либо сетки?". В таком случае нашей целью станет найти такой квадрат, что он будет иметь наибольший размер в пределах сетки, но также будет возможность за