C/C++

Разработать алгоритм и записать программу.

Разработать алгоритм и записать программу.
1. Вывести все простые числа в указанном интервале: от 3 до 9999.
#include <iostream>
#include <iomanip>
using namespace std;
bool isprime(int n, int m = 3) {
if (m > (n >> 1)) return true;
return n % m? isprime(n, m += 2) : false;
}
int main() {
for (auto x = 3; x < 9999; x += 2) if (isprime(x)) cout << setw(5) << x;
puts("");
system("pause > nul");
}
Сергей Федотов
Сергей Федотов
85 021
Лучший ответ
#include <stdio.h>

int main()
{
const int lim1 = 3, lim2 = 9999;
/* в интервал эти значения не входят, в отличае от отрезка */
for(int x = lim1 + 1; x < lim2; x++)
{
int tmp;
for(int y = 2; y < x; y++)
{
tmp = x % y;
if(!tmp) break;
}
if(tmp) printf("%d ", x);
}
putchar('\n');

return 0;
}
Бахытбек Косжанов Алгоритмы давно не составлял. Навык утрачен. Постарайтесь сами сделать.
Бахытбек Косжанов if(!tmp) означает: ЕСЛИ tmp равно нулю, то есть тот случай, когда число поделилось без остатка.
(✿^‿^) Алгоритм вывода таблицы Лемера для простых чисел в диапазоне [3;999] простой - с помощью сита Эратосфена до ceil(√999) или, короче, до тридцати одного:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int k, l, m, n[1000];
for (k = 0; k < 1000; k++)
n[k] = 1;
n[0] = n[1] = 0;
n[2] = 1;
for (k = 2; k <= 31; k++)
if (n[k])
{
l = 999 / k;
for (m = 2; m <= l; m++)
n[m * k] = 0;
}
for (k = 3; k <= 999; k++)
if (n[k])
{
l++;
cout << setw(5) << k;
if (l == 10)
{
l = 0;
cout << endl;
}
}
cout << endl;
getchar();
}
Александр Гамшеев Ой, я не разглядела - диапазон-то, оказывается [3;9999] 。◕‿◕。
Тогда так: