мне дано число натуральное n, мне надо перебрать все числа до н включительно, выделить из них простые, перевести все простые в двоичную систему исчисления, найти максимум единиц в определенном числе, и ответом должен быть вывод этого числа в десятичной системе
понимаю как сделать все эти манипуляции с одним конкретным числом, а как все это в циклах сделать с оп-ленным кол-вом чисел не понимаю. нужна помощь! какая-нибудь схема структуры с пояснением или код целиком, если найдутся добрячки )\
Другие языки программирования и технологии
Циклы с++, нужна помощь
(пример на СИ)
i = 1;
while ( i < n)
{
тут работа с конкретным числом i;
...
i++;
}
для переводов в другие СС нагуглил что то вроде этого http://www.cplusplus.com/reference/ios/hex/
или самому написать
i = 1;
while ( i < n)
{
тут работа с конкретным числом i;
...
i++;
}
для переводов в другие СС нагуглил что то вроде этого http://www.cplusplus.com/reference/ios/hex/
или самому написать
Александр Алексеевич
мне каждое действие понятно, но как это структурировать, как хранить кол-во единиц в каждом числе и как вычислить максимум, не могу всё это собрать в одно и разобраться
#include <iostream>
using namespace std;
using ullong = unsigned long long;
bool is_prime(ullong num) {
const static auto zero = 0ULL, one = 1ULL, two = 2ULL, three = 3ULL, five = 5ULL;
bool prime;
if (num <= five && (num <= two || num == three || num == five)) {
prime = true;
} else if (~num & one || zero == num % three || zero == num % five) {
prime = false;
} else {
unsigned n;
for (n = three; n * n <= num && num % n; n += two) { ; }
prime = n * n > num? true : false;
}
return prime;
}
unsigned count_units(ullong num) {
auto n = 0U;
while (num) {
n += num & 1? 1 : 0;
num >>= 1;
}
return n;
}
ullong pumd(ullong n) {
auto um = 0U;
auto num = 0ULL;
for (auto i = n; static_cast<ullong>(pow(2, um + 1)) < i; --i) {
if (is_prime(i)) {
auto tmp = count_units(i);
if (tmp > um) {
um = tmp;
num = i;
}
}
}
return num;
}
int main() {
cout << "n: ";
ullong n;
cin >> n;
auto x = pumd(n);
cout << "x: " << x << '\n';
system("pause");
}
using namespace std;
using ullong = unsigned long long;
bool is_prime(ullong num) {
const static auto zero = 0ULL, one = 1ULL, two = 2ULL, three = 3ULL, five = 5ULL;
bool prime;
if (num <= five && (num <= two || num == three || num == five)) {
prime = true;
} else if (~num & one || zero == num % three || zero == num % five) {
prime = false;
} else {
unsigned n;
for (n = three; n * n <= num && num % n; n += two) { ; }
prime = n * n > num? true : false;
}
return prime;
}
unsigned count_units(ullong num) {
auto n = 0U;
while (num) {
n += num & 1? 1 : 0;
num >>= 1;
}
return n;
}
ullong pumd(ullong n) {
auto um = 0U;
auto num = 0ULL;
for (auto i = n; static_cast<ullong>(pow(2, um + 1)) < i; --i) {
if (is_prime(i)) {
auto tmp = count_units(i);
if (tmp > um) {
um = tmp;
num = i;
}
}
}
return num;
}
int main() {
cout << "n: ";
ullong n;
cin >> n;
auto x = pumd(n);
cout << "x: " << x << '\n';
system("pause");
}
Александр Алексеевич
страшилка какая-то...
Похожие вопросы
- Нужна помощь в решении задач на Циклы и простейшие программы
- Нужна помощь по информатике.
- Нужна помощь с паскалем!
- Программисты,нужна помощь,пожалуйста Для вас легко
- Логика. Нужна помощь.
- Нужна помощь
- Информатика!Нужна помощь!если можно,с объяснением.
- Пожалуйста, очень нужна помощь с Pascal
- Люди! Нужна помощь. Помогите настроить Оперу
- Срочно нужна помощь WEB-программиста, который мог бы состряпать сайт