Я пытаюсь получить две функции, чтобы дать мне LCM (наименьшее распространенное множество) и GCD (наибольший общий знамеC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Я пытаюсь получить две функции, чтобы дать мне LCM (наименьшее распространенное множество) и GCD (наибольший общий знаме

Сообщение Anonymous »

Я работаю над проектом, который генерирует выигрышные номера лотереи, которые имеют определенные условия, они должны начинать с 0, длиться 7 цифр и быть делится на 3, 5 и 7, что означает, что вы должны иметь возможность разделить его на его LCM, что 105. Пока это работает для задания, я думаю, что для пользователя было бы лучше, чтобы вы могли выбирать, что многие, и которые будут полезны, чтобы многие были в пользу Просто нужно изменить параметры.
Наш код имеет эту функцию для проверки, если введенный номер действителен: < /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);
});
}
Я работаю над предварительным просмотром Visual Studio 2022, я полагаю, что версия C ++ не поддерживает функцию STD :: Накапливание, какие еще параметры я могу использовать?

Подробнее здесь: https://stackoverflow.com/questions/797 ... ltiple-gcd
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Наименьшее распространенное множество для более чем двух чисел
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • C# найти наибольший общий делитель
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • C# найти наибольший общий делитель
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • LCM использует рекурсивный?
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • LCM использует рекурсивный?
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»