Найти все простые числа в диапазоне от a до b (диапазон вводится с клавиатуры), или сообщить, что в указанном диапазоне таких чисел нет.
Нужно использовать циклы if и else.
C/C++
Найти все простые числа в диапазоне от a до b
#include <iostream>
using namespace std;
bool is_simple(int& x) //проверка на простоту
{
if (x <= 1) return false; //если число 1 или меньше - не проверяем.
for (int i = 2; i <= (x>>1); i++) //делим число х на все числа от 2 до половины (x>>1 = x/2) от этого числа
if (!(x % i)) return false; //если делится без остатка возвращаем false
return true; //если возврата false не было, значит число простое, возвращаем true
}
int main()
{
setlocale(0, "");
int d_begin, d_end; //задаваемые границы
bool chek = true; //чекер для вывода "не найдено"
cout << "Введите дипазаон от и до\n";
cin >> d_begin >> d_end;
for (int x = d_begin; x <= d_end; x++) //начинаем проверку диапазона
{
if (is_simple(x)) //проверяем простое ли число
{
cout << x << " "; chek = false; //если да то выводим его и обнуляем чекер вывода "не найдено"
}
}
if (chek) cout << "Чисел не найдено.\n"; //если чекер не обнулялся, значит простых чисел не было, значит выводим эту надпись
}
using namespace std;
bool is_simple(int& x) //проверка на простоту
{
if (x <= 1) return false; //если число 1 или меньше - не проверяем.
for (int i = 2; i <= (x>>1); i++) //делим число х на все числа от 2 до половины (x>>1 = x/2) от этого числа
if (!(x % i)) return false; //если делится без остатка возвращаем false
return true; //если возврата false не было, значит число простое, возвращаем true
}
int main()
{
setlocale(0, "");
int d_begin, d_end; //задаваемые границы
bool chek = true; //чекер для вывода "не найдено"
cout << "Введите дипазаон от и до\n";
cin >> d_begin >> d_end;
for (int x = d_begin; x <= d_end; x++) //начинаем проверку диапазона
{
if (is_simple(x)) //проверяем простое ли число
{
cout << x << " "; chek = false; //если да то выводим его и обнуляем чекер вывода "не найдено"
}
}
if (chek) cout << "Чисел не найдено.\n"; //если чекер не обнулялся, значит простых чисел не было, значит выводим эту надпись
}
Если числа a и b не очень большие (то есть где-то до 2³¹-1=2147483647, а диапазон [a;b] не очень широкий, то существенной оптимизации не требуется и поэтому можно так:
#include <cmath>
#include <iomanip>
#include <iostream>
using namespace std;
bool is_prime(int x)
{ if (x < 2) return false;
if (x == 2 || x == 3) return true;
if (x % 2 == 0) return false;
for (int i = 3; i <= ceil(sqrt(x)); i += 2)
if (x % i == 0) return false; return true; }
int main()
{ int a, b, c, d = 0; cout << "a b: "; cin >> a >> b;
for(c = a; c <= b; c++) if (is_prime(c))
{ cout << setw(11) << c; ++d; if (d == 10)
{ cout << endl; d = 0; } } }
Это для экрана шириной в 120 символов:
#include <cmath>
#include <iomanip>
#include <iostream>
using namespace std;
bool is_prime(int x)
{ if (x < 2) return false;
if (x == 2 || x == 3) return true;
if (x % 2 == 0) return false;
for (int i = 3; i <= ceil(sqrt(x)); i += 2)
if (x % i == 0) return false; return true; }
int main()
{ int a, b, c, d = 0; cout << "a b: "; cin >> a >> b;
for(c = a; c <= b; c++) if (is_prime(c))
{ cout << setw(11) << c; ++d; if (d == 10)
{ cout << endl; d = 0; } } }
Это для экрана шириной в 120 символов:

Похожие вопросы
- Дана матрица целых чисел 8×8. Найти количество простых чисел в этой матрице
- C++ Выведите в порядке возрастания все простые числа на отрезке [l;r]. Оформите решение в виде функции bool
- Написать кусочек С++Выведите в порядке возрастания все простые числа на отрезке [l;r]. Оформите решение в виде функции
- Си. Цикл for. Что не так? Составить программу вывода на экран всех простых чисел не превосходящих введеннного числа N
- Вывести на экран n первых простых чисел, начиная с единицы. n вводится с клавиатуры.
- Найти сумму цифр чисел, записанных в файл
- Написать программу, возвращающую значение N, если N - простое число
- Программирование на С++.Комплексное число представляют парой действительных чисел (a,b).
- Помогите пожалуйста построить таблицу значений функции y = f(x) для x ∈ [a, b] с шагом h (с помощью условного оператора)
- Сформировать матрицу B(M, N) элементами которой являются случайные числа, равномерно распределенные в интервале (-5, 7