Учитывая максимальное n
, вы хотите вернуть наименьшее число, которое делится на 1 - 20.
Давайте посмотрим на набор от 1 до 20. Прежде всего, он содержит ряд простых чисел, а именно:
2
3
5
7
11
13
17
19
Итак, поскольку он должен делиться на 19, вы можете проверить только кратные 19, потому что 19 - это простое число. После этого вы проверяете, можно ли его разделить на тот, что ниже, и т. Д. Если число можно успешно разделить на все простые числа, его можно разделить на числа от 1 до 20.
float primenumbers[] = { 19, 17, 13, 11, 7, 5, 3, 2; };
float num = 20;
while (1)
{
bool dividable = true;
for (int i = 0; i < 8; i++)
{
if (num % primenumbers[i] != 0)
{
dividable = false;
break;
}
}
if (dividable) { break; }
num += 1;
}
std::cout << "The smallest number dividable by 1 through 20 is " << num << std::endl;