Решаем математическую задачу при помощи компьютера
У многих часто возникает вопрос - какие задачи можно решить при помощи компьютера? Ответ - банальные математические задачи. Составить алгоритм совсем несложно, а вычислительные мощности процессора будут задействованы совсем чуть-чуть.
Задача
Математик, высшее образование. Не могу решить задачу!
Надо найти все четырехзначные числа, у которых квадрат суммы числа из первых двух цифр и из последних двух цифр равен этому числу.
Например: 9801 = (98+01) в квадрате.
Пробовал решить задачу на бумаге - не получилось. Пришлось прибегнуть к помощи компьютера.
Формула будет выглядеть следующим образом:
Попробуем решить эту задачу.
Составим алгоритм
Перебираем все числа от 10 до 99 - это будут первые два числа четырёхзначного числа.
Для каждого из этих чисел подставляем пару из диапазона от 0 до 99.
Складываем эти двузначные числа и находим квадрат суммы. Сравниваем его с четырёхзначным числом.
Решение на PHP
$ab = 10;
while($ab <= 99) {
$cd = 0;
while($cd <= 99) {
$left = ($ab + $cd) ** 2;
$right = $ab * 100 + $cd;
if ($left == $right) {
echo '(' . $ab . '+' . $cd . ') ^ 2 = ' . $right . '<br />';
}
$cd++;
}
$ab++;
}
Результат работы скрипты будет таким:
(20+25) ^ 2 = 2025
(30+25) ^ 2 = 3025
(98+1) ^ 2 = 9801
Получается уравнение имеет всего 3 решения!? Я думал, что их будет больше.
Решение на JavaScript
let ab = 10;
while (ab <= 99) {
let cd = 0;
while (cd <= 99) {
let left = Math.pow((ab + cd), 2)
let right = ab * 100 + cd;
if (left == right) {
console.log('(' + ab + '+' + cd + ') ^ 2 = ' + right)
}
cd++;
}
ab++;
}
На JavaScript решение будет аналогичным. В консоли браузера будет ровно тоже, что и в php выдаче.
Таким нехитрым способом мы обошли 9000 пар чисел и выполнили 45000 арифметических операций. Но всего лишь 3 пары чисел были верным решением задачи.
Скрипт выполняется мгновенно и не создаёт нагрузки на процессор.
Если вам ясен алгоритм решения задачи - вы можете использовать языки программирования для решения многих повседневных задач.
Программирование - это просто ;)
Материал подготовлен автором @tristamoff