
срочно помогите пожалуйста!!!! Последовательность Хэмминга образуют натуральные числа, не имеющие
других простых делителей, кроме 2, 3 и 5. Найти сумму первых N элементов этой последовательности. C++ (+текстовое решение)

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

например, это можно сделать так:
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;
}



Для нахождения суммы первых 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 элементов последовательности Хэмминга и выводит ее на экран.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili