Упражнения на C ++: создание первых двадцати чисел Хэмминга
Числа C ++: упражнение 42 с решением
Напишите программу на C ++ для создания первых двадцати чисел Хэмминга.
Пример решения :
Код C ++:
#include <iostream>
#include <cmath>
using namespace std;
bool chkHhamming (int n)
{
if (n == 1) return true;
if (n%2==0 or n%3==0 or n%5==0)
{
for (int i = 2; i*i < n; ++i)
{
if (n%i == 0) {
if (i%2 != 0 and i%3!=0 and
i%5!=0) return false;
}
if (n%(n/i) == 0) {
if ((n/i)%2 != 0 and (n/i)%3!=0
and (n/i)%5!=0) return false;
}
}
return true;
}
return false;
}
int main ()
{
int n,j;
cout << "\n\n Find first twenty Hamming numbers: \n";
cout << " ---------------------------------------\n";
cout << " Input the upper limit of Hamming numbers: ";
cin>>n;
cout << " The Hamming numbers are: "<<endl;
while (j<=n)
{
int count = 0;
int i = 1;
bool first = true;
while (count < n)
{
if (chkHhamming(i))
{
if (not first) cout << ",";
cout << i;
++count;
first = false;
}
++i;
}
j++;
}
cout <<endl;
}
Пример вывода:
Найдите первые двадцать чисел Хэмминга: --------------------------------------- Введите верхний предел чисел Хэмминга: 20 Числа Хэмминга: 1,2,3,4,5,6,8,9,10,12,15,16,18,20,24,25,27,30,32,361,2,3,4,5,6,8, 9,10,1 2,15,16,18,20,24,25,27,30,32,361,2,3,4,5,6,8,9,10,12,15,16,18,20,24,25, 27,30,32,361,2,3,4,5,6,8,9,10,12,15,16,18,20,24,25,27,30,32,361,2,3,4,5 , 6,8,9,10,12,15,16,18,20,24,25,27,30,32,361,2,3,4,5,6,8,9,10,12,15,16 , 1 8,20,24,25,27,30,32,361,2,3,4,5,6,8,9,10,12,15,16,18,20,24,25,27,30,32, 361,2,3,4,5,6,8,9,10,12,15,16,18,20,24,25,27,30,32,361,2,3,4,5,6,8, 9,10 , 12,15,16,18,20,24,25,27,30,32,361,2,3,4,5,6,8,9,10,12,15,16,18,20,24,2 5,27,30,32,361,2,3,4,5,6,8,9,10,12,15,16,18,20,24,25,27,30,32,361,2,3,4 , 5,6,8,9,10,12,15,16,18,20,24,25,27,30,32,361,2,3,4,5,6,8,9,10,12,15 , 16 , 18,20,24,25,27,30,32,361,2,3,4,5,6,8,9,10,12,15,16,18,20,24,25,27,30,3 2,361,2,3,4,5,6,8,9,10,12,15,16,18,20,24,25,27,30,32,361,2,3,4,5,6,8, 9, 10,12,15,16,18,20,24,25,27,30,32,361,2,3,4,5,6,8,9,10,12,15,16,18,20,24 , 25,27,30,32,361,2,3,4,5,6,8,9,10,12,15,16,18,20,24,25,27,30,32,361,2,3 , 4,5,6,8,9,10,12,15,16,18,20,24,25,27,30,32,361,2,3,4,5,6,8,9,10,12 , 15, 16,18,20,24,25,27,30,32,361,2,3,4,5,6,8,9,10,12,15,16,18,20,24,25,27,30 , 32,36
Блок - схема:
Редактор кода C ++:
Внесите свой код и комментарии через Disqus.
Предыдущий: Напишите программу на C ++, чтобы проверить, является ли число Китом или нет.
Далее: Напишите программу на C ++, чтобы проверить, является ли данное число числом Армстронга или нет.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
disqus2code