Вывести на экран n первых простых чисел, начиная с единицы. n
вводится с клавиатуры. Простые числа не имеют других делителей, кроме
единицы и самого себя. Решить задачу с помощью цикла for. Сделать проверку
на корректность ввода количества чисел.
C/C++
Вывести на экран n первых простых чисел, начиная с единицы. n вводится с клавиатуры.
Смотри тут
https://habr.com/ru/post/122538/
https://habr.com/ru/post/122538/
#include
#include
#include
#include
#include
#include
using namespace std;
using prime_t = unsigned long long;
bool is_prime(const prime_t x) {
bool p;
if (x == 1) p = false;
else if (x == 2) p = true;
else if (~x & 1) p = false;
else if (x < 6) p = true;
else if (0 == x % 3 || 0 == x % 5) p = false;
else {
prime_t n;
for (n = 3; n * n x;
}
return p;
}
unsigned long input(const char* msg) {
auto value = 0U;
string tmp;
while (!value) {
cout > tmp;
try {
if (!all_of(tmp.begin(), tmp.end(), isdigit)) throw exception();
value = stoul(tmp);
return value;
} catch (...) {
cin.clear();
cin.ignore(numeric_limits::max(), '\n');
value = 0U;
}
}
}
int main() {
const auto k = input("Number: ");
vector box(k);
if (k > 0) box[0] = 2;
size_t i = 0;
for (prime_t x = 3; ++i < k; x += 2) is_prime(x) ? box[i] = x : --i;
stringstream ss;
for (auto x : box) ss
Если n - число не очень большое (например, не более чем пятизначное), тогда проблема только с аккуратным выводом в консоль:
#include <cmath>
#include <iomanip>
#include <iostream>
using namespace std; bool prime(int n)
{ if (n < 4) return true; if (~ n & 1) return false;
for (int m = 3; m <= sqrt(n); m += 2)
if (n % m == 0) return false; return true; }
int main() { int i, j = 0, n; cout << "n: "; cin >> n;
for (i = 1; i <= n; i++) if (prime(i)) { cout <<
setw(6) << i; ++j; if (j == 20) { j = 0; cout <<
endl; } } if (j) cout << endl; cin.get(); cin.get();
return 0; }
Но если n - достаточно большое число, тогда надо алгоритм существенно перерабатывать, да и вывод на консольный экран тогда тоже надо оптимизировать...
P.S. А с каких это пор единица стала вдруг простым числом?
#include <cmath>
#include <iomanip>
#include <iostream>
using namespace std; bool prime(int n)
{ if (n < 4) return true; if (~ n & 1) return false;
for (int m = 3; m <= sqrt(n); m += 2)
if (n % m == 0) return false; return true; }
int main() { int i, j = 0, n; cout << "n: "; cin >> n;
for (i = 1; i <= n; i++) if (prime(i)) { cout <<
setw(6) << i; ++j; if (j == 20) { j = 0; cout <<
endl; } } if (j) cout << endl; cin.get(); cin.get();
return 0; }

P.S. А с каких это пор единица стала вдруг простым числом?
Похожие вопросы
- C++ Выведите в порядке возрастания все простые числа на отрезке [l;r]. Оформите решение в виде функции bool
- Написать кусочек С++Выведите в порядке возрастания все простые числа на отрезке [l;r]. Оформите решение в виде функции
- Си. Цикл for. Что не так? Составить программу вывода на экран всех простых чисел не превосходящих введеннного числа N
- Из двух чисел с разной четностью вывести на экран нечетное число.
- Написать программу, возвращающую значение N, если N - простое число
- Вывести на экран набор чисел в виде таблицы. Между столбиками по два пробела. Столбики должны быть выровнены.
- Найти сумму факториала K=1!+2!...n! нечетных чисел от 1 до n.
- C++ Вычислить и вывести на экран в виде таблицы
- Даны два числа: n и m. Создайте двумерный массив размером n×m и заполните его в соответствии с примером.
- Для произвольного массива заполнить его числами от 1 до n