Наш код имеет эту функцию для проверки, если введенный номер действителен: < /p>
Код: Выделить всё
bool isValid(string code) {
if (code.length() != 7 || code[0] != '0') return false;
int number = stoi(code.substr(1));
return number % 105 == 0;
}
< /code>
Теперь 105 является проблемой. Мне нужно было бы изменить это на переменную, которая содержит LCM желаемого количества делителей, и я должен был рассчитать его заранее, чтобы он работал. Таким образом, я изменил некоторые функции для расчета LCM и GCD, которые мы использовали в классе. Первоначально мы использовали GCD для катуляции LCM, но, поскольку он содержит больше, чем только одна пара цифр, они с тех пор обратились к чему -то, полностью другому.
, прежде чем называть функцию, которую пользователь должен сказать, сколько делителей в игре и для их ввода в одном, я думаю, что они хранятся в векторе, названном Numdivisors. lcm. < /p>
// Find the GCD
int findGCD(vector numDivisors)
{
int min = *min_element(numDivisors.begin(), numDivisors.end());
int max = *max_element(numDivisors.begin(), numDivisors.end());
if (min == max)
{
return min;
}
else {
for (auto i = 0; i < numDivisors.size(); i++)
{
if (numDivisors[i] > min)
{
numDivisors[i] = numDivisors[i] - min;
}
}
return findGCD(numDivisors);
}
}
// Find the lcm
int findLCM(vector numDivisors, int n)
{
std::vector numDivisors;
auto lcm = std::accumulate(numDivisors.begin(), numDivisors.end(), 1, [](auto & a, auto & b) {
return abs(a * b) / std::__gcd(a, b);
});
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... ltiple-gcd