Вопрос задан 04.10.2023 в 04:26. Предмет Информатика. Спрашивает Ervanli Murad.

срочно помогите пожалуйста!!!! Последовательность Хэмминга образуют натуральные числа, не имеющие

других простых делителей, кроме 2, 3 и 5. Найти сумму первых N элементов этой последовательности. C++ (+текстовое решение)
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Косточакова Динара.

например, это можно сделать так:

UPD: изменено

#include <iostream>

#include <set>

#include <cmath>

using namespace std;

bool prime(int n){

   for(int i = 2; i * i <= n; i++)

       if(n % i == 0)

           return false;

   return true;    

}

signed main() {

   int n;

   cin >> n;

   set<int> ok;

   ok.insert(2);

   ok.insert(3);

   ok.insert(5);

   int sum = 0, cnt = 0,cur = 2;

   while(cnt != n){

       bool norm = true;

       for(int i = 2; i * i <= cur; i++)

           if(cur % i == 0 && ( ok.find(i) == ok.end() && prime(i)) || (cur % (n/i) == 0 && ok.find(n/i) == ok.end() && prime(n/i)))

               norm = false;

       if(norm){sum += cur; cnt++;}

       cur++;

   }

   cout << sum;

}

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для нахождения суммы первых N элементов последовательности Хэмминга, следует написать программу на C++, которая будет генерировать эти элементы и складывать их. Вот текстовое решение:

cpp
#include <iostream> #include <vector> using namespace std; // Функция для нахождения N-го элемента последовательности Хэмминга int findNthHammingNumber(int n) { vector<int> hammingNumbers(n); hammingNumbers[0] = 1; // Первый элемент - 1 int i2 = 0, i3 = 0, i5 = 0; // Индексы для множителей 2, 3 и 5 for (int i = 1; i < n; i++) { // Находим следующий элемент последовательности как минимум из трех возможных int nextHammingNumber = min(min(hammingNumbers[i2] * 2, hammingNumbers[i3] * 3), hammingNumbers[i5] * 5); // Обновляем индексы, соответствующие множителям if (nextHammingNumber == hammingNumbers[i2] * 2) { i2++; } if (nextHammingNumber == hammingNumbers[i3] * 3) { i3++; } if (nextHammingNumber == hammingNumbers[i5] * 5) { i5++; } hammingNumbers[i] = nextHammingNumber; } return hammingNumbers[n - 1]; } int main() { int N; cout << "Введите число N: "; cin >> N; int sum = 0; for (int i = 1; i <= N; i++) { sum += findNthHammingNumber(i); } cout << "Сумма первых " << N << " элементов последовательности Хэмминга: " << sum << endl; return 0; }

Этот код сначала находит N-й элемент последовательности Хэмминга, используя алгоритм, который вычисляет каждый следующий элемент путем умножения существующих элементов на 2, 3 и 5 и выбора минимального. Затем он находит сумму первых N элементов последовательности Хэмминга и выводит ее на экран.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос