БлогNot. Ищем много чисел харшад (Нивена)

Ищем много чисел харшад (Нивена)

Числа харшад - это просто натуральные числа, делящиеся нацело на сумму своих цифр.

Так как не нашёл таблицы нужного размера, быстрее реализовать этот несложный алгоритм самостоятельно.

Программа выводит N = 100000 первых десятичных чисел харшад в консоль и файл harshad.txt. Проверено в актуальной сборке Visual Studio 2019.

Далее можно увидеть листинг программы и скачать файл с числами Нивена.

#include <vector>
#include <iostream>
#include <fstream>
using namespace std;

int sumDigits(int number) {
 int sum = 0;
 while (number) {
  sum += number % 10;
  number /= 10;
 }
 return sum;
}

bool isHarshad(int number) {
 return number % (sumDigits(number)) == 0;
}

int main() {
 const int N = 100000;
 vector <int> harshads;
 int i = 0;
 while (harshads.size() != N) {
  i++;
  if (isHarshad(i)) harshads.push_back(i);
 }
 ofstream f("harshad.txt");
 if (!f) {
  cout << "File open error!";
  return 1;
 }
 cout << N << " harshad numbers: " << endl;
 f << N << " harshad numbers: " << endl;
 for (int number : harshads) {
  cout << number << endl;
  f << number << endl;
 }
 f.close();
 return 0;
}

 Скачать первые 100000 чисел Харшад в архиве .zip с файлом .txt (238 Кб)

06.09.2021, 12:41 [1036 просмотров]


теги: c++ числа алгоритм

К этой статье пока нет комментариев, Ваш будет первым