C/C++

Задача по С++ ДИНАМИЧЕСКИЙ МАССИВ

Дин. массив. Напишите программу, которая требует ввода числа n, затем создает динамический массив из n элементов, вводит n натуральные числа, затем, заменяет все простые числа на нули. В конце напечатать элементы массива.
#include <iostream>
using namespace std;
bool is_prime(unsigned x) {
bool prime;
if (x <= 1) prime = false;
else if (x <= 5 && (x <= 2 || x == 3 || x == 5)) prime = true;
else if (~x & 1 || 0 == x % 3 || 0 == x % 5) prime = false;
else {
unsigned n;
for (n = 3; n * n <= x && x % n; n += 2) { ; }
prime = n * n > x? true : false;
}
return prime;
}
int main() {
cout << "n: ";
size_t n;
cin >> n;
auto box = new int[n];
cout << "Elements: ";
for (auto i = 0U; i < n; ++i) cin >> box[i];
for (auto i = 0U; i < n; ++i) if (is_prime(box[i])) box[i] = 0;
cout << "Elements: ";
for (auto i = 0U; i < n; ++i) cout << box[i] << ' ';
puts("");
delete[] box;
system("pause > nul");
}
ДГ
Дониёр Гафуров
66 333
Лучший ответ
Леонид Марков Во! Автор дело говорит! =)
#include <iostream>
#include <cmath>
int prime(long long n)
{
int l, m;
if (n < 2) return 0;
if (n == 2) return 1;
m = ceil(sqrt(n));
for (l = 2; l <= m; l++)
if (n % l == 0) return 0;
return 1;
}
int main()
{
int m, n;
std::cout << "n = ";
std::cin >> n;
long long *a = new long long [n];
for (m = 0; m < n; m++) std::cin >> a[m];
for (m = 0; m < n; m++)
{
if (prime(a[m])) a[m] = 0;
std::cout << m + 1 << ") " << a[m] << '\n';
}
return 0;
}
Леонид Марков Хоть бы четные исключили из перебора...
Виктор Рукавишников Вот тоже пример то ли дурака, то ли не пойми вообще кого. Из какого перебора чётные исключать? В главной функции main все введённые числа надо проверять на простоту, а все чётные числа кроме двойки автоматически обнуляются! Зачем их надо как-то специально исключать из перебора? В функции же prime процесс проверки на простоту не оптимальный. Оптимальнее всего делить пробное число лишь на простые числа, но их ещё нужно для этого сначала сгенерировать! При работе с восьмибайтными беззнаковыми целыми в качестве вводимых с экрана чисел потребуется получить список всех простых чисел, которые можно выразить четырёхбайтными беззнаковыми целыми, а для хранения их в памяти потребуется больше полугигабайта! А оно того стóит? Нет, я могу, конечно, сделать такой генератор, но зачем?
Виктор Рукавишников А если ещё вместо типа long long везде поставить int или unsigned, то такие клоунские советы как у этого ...просто дики и смешны - и так всё будет летать на бешенных скоростях, а от добра добра не ищут!
Виктор Рукавишников А Люсьеночку я хочу спросить - а это что всё вообще такое? Какой-то неуч ещё будет Вас лодырем обзывать. В чмор его тогда!
Виктор Рукавишников Вот бывают же такие психически больные! У меня всё проверено и работает надёжно! Даже если брать большие числа типа триллионов, всё равно всё обрабатывается быстро, эффективно и совершенно корректно! Где ошибка? Да нет ошибок. А для оптимизации работы программы можно использовать предложенный мной метод.
Психически же больной дегенерат, не предложивший никаких стóящих идей, с настырностью ишака продолжает нести свой оголтелый бред. И ведь мало того что неуч, так ещё и стопроцентный хам!
Если таким вот психически больным митрофанушкам скотининым, у которых шило в заднице, давать волю, так они и вовсе оборзеют. Лучше всё таки всех таких своевременно банить!