0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
1

Найти простые числа в заданном диапазоне

14.09.2010, 23:12. Показов 17840. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите пожалуйста написать программку...я все уже тут посмотрела, никак не могу реализовать её
Найти все простые числа заданном диапазоне(не массив), например вводим а=5, в=30 -в этом диапазоне найти простые числа. Использовать только цикл, может условия какие. больше никаких прибамбасов нельзя, не прошли) на С++
очень прошу, уже битый час мучаюсь...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.09.2010, 23:12
Ответы с готовыми решениями:

Найти простые числа в заданном диапазоне (циклы)
Найти простые числа в диапазоне от 2 до 1000 цикл в цикле с помощью циклов for

Найти все простые числа в заданном диапазоне
Найти все простые числа в промежутке между натуральными числами а и b (а > 2000, b - а ≥ 20)

Найти все простые числа в заданном диапазоне и вывести их на экран
Доброго времени суток! Есть задачка, есть кривое решение. :) Суть задачки такова: найти все...

Найти простые числа в заданном диапазоне с помощью решета Эратосфена
Задача: вывести простые числа в диапозоне от А до В. ( 2 ≤ А и ≤ В ≤ 100000 )...

24
Шаровик затейник
696 / 445 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
14.09.2010, 23:18 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
using namespace std;
void main()
{
int a=0,b=0;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
for(int i=a;i<=b;i++)
cout<<i<<"\t";
cout<<endl;
 
}
Если я правильно понял условие то как то так
0
В астрале
Эксперт С++
8048 / 4805 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
14.09.2010, 23:25 3
Crudelis, Посмотрите определение простых чисел. На всякий случай.
0
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
14.09.2010, 23:27  [ТС] 4
почему присваем int a=0,b=0; и я так понимаю что мы вводим потом какие то а и в, далее идет цикл и просто выводит нам i? и у меня вышла ошибочка.....
простые числа те которые делятся только на себя...и на единицу, у них нет доп делителей
2,3,5,7,11,13,17
0
В астрале
Эксперт С++
8048 / 4805 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
14.09.2010, 23:30 5
Исправлен. Работает корректно

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<iostream>
 
bool simple(int a)
{
    int cnt=0;
    for(int i=2; i<=a/2; ++i)
        if(a%i==0)
           cnt++;
    if(cnt)
       return false;
    else
       return true;
}
 
int main()
{
int a=0,b=0;
std::cout<<"a=";
std::cin>>a;
std::cout<<"b=";
std::cin>>b;
for(int i=a;i<=b;i++)
    if(simple(i)) 
         std::cout<<i<<'\n';
std::cout<<std::endl;
return 0; 
}
0
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
14.09.2010, 23:34  [ТС] 6
Lavroff, спасибо, ну тут столько не понятных символов, мы даже не знаем что это такое))) можно комменты)
0
Шаровик затейник
696 / 445 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
14.09.2010, 23:35 7
Цитата Сообщение от wild_flower Посмотреть сообщение
почему присваем int a=0,b=0;
инициализация а и б нулем при создании это как бы само защита от того что при создании в них не будет мусора, если вдруг забудете далее в программе ввести их с клавиатуры

Добавлено через 1 минуту
Lavroff, я думаю что функции они ещё не проходили, если задача только на цикл
0
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
14.09.2010, 23:36  [ТС] 8
Crudelis, клево)) он выводит числа все...вообще супер!!! а как теперь из них простые вывести))?
0
В астрале
Эксперт С++
8048 / 4805 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
14.09.2010, 23:39 9
Хм.. Ну вот без функций...

Перед функциями cout, cin и пр. можно убрать std, если раскоментировать строчку using namespace std;

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
 
//using namespace std;
 
int main()//main
{
int a=0,b=0;
std::cout<<"a=";//std::cout==cout
std::cin>>a;//std::cin==cin
std::cout<<"b=";
std::cin>>b;
for(int i=a;i<=b;i++)//От а до б включительно
{
    bool cnt=false;//Флажок устанавливаем в false
    for(int j=2; j<=i/2; ++j)//От 2 до i/2
    {
         if(i%j==0)//i делится без остатка на j
            cnt=true;//Ставим флажок в true
    }
    if(cnt==false)//Если флажок false
       std::cout<<i<<'\n';//Печатаем i
}
return 0;//Возвращаем ноль 
}
0
Шаровик затейник
696 / 445 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
14.09.2010, 23:42 10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
using namespace std;
void main()
{
int a=0,b=0;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
for(int i=a;i<=b;i++){
 
int cnt=0;
    for(int j=2; j<=i/2; ++i){
        if(i%j==0)
           cnt++;}
      if(!cnt)
         cout<<i<<"\t";
   }
}
cout<<endl;
 
}
Добавлено через 28 секунд

Не по теме:

Опоздал

0
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
14.09.2010, 23:49  [ТС] 11
Crudelis, спасибо огромное, но че т он мне подчеркивает i выдает ошибку
0
Шаровик затейник
696 / 445 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
14.09.2010, 23:52 12
wild_flower, да что я.... вы лучше спасибо скажите Lavroff вон он какую работу проделал, даже закоментил код)

Добавлено через 1 минуту
wild_flower, какую именно ошибку выдает? скопируйте сюда
0
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
14.09.2010, 23:52  [ТС] 13
Lavroff, спасибо огромное) у вас чем то похожи програмки, но увас выдает ошибку в 18 строке -подчеркивает (cnt)
0
Шаровик затейник
696 / 445 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
14.09.2010, 23:56 14
wild_flower, у меня нормально компилиурется и работает программа что дал Lavroff
0
В астрале
Эксперт С++
8048 / 4805 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
14.09.2010, 23:58 15
Как это? оО. Вы точно в С++ работаете? Булевскую переменную то он с фигали подчеркивает? Ну ладно...

А так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
 
int main()
{
int a=0,b=0;
std::cout<<"a=";
std::cin>>a;
std::cout<<"b=";
std::cin>>b;
for(int i=a;i<=b;i++)
{
    int cnt=0;
    for(int j=2; j<=i/2; ++j)
    {
         if(i%j==0)
            cnt=1;
    }
    if(cnt==0)
       std::cout<<i<<'\n';
}
return 0; 
}
Добавлено через 1 минуту
Сишный стиль объявления переменных... проверьте это...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
 
int main()
{
int a=0,b=0, cnt, i;
std::cout<<"a=";
std::cin>>a;
std::cout<<"b=";
std::cin>>b;
for(i=a;i<=b;i++)
{
    cnt=0;
    for(int j=2; j<=i/2; ++j)
    {
         if(i%j==0)
            cnt=1;
    }
    if(cnt==0)
       std::cout<<i<<'\n';
}
return 0; 
}
0
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
15.09.2010, 00:02  [ТС] 16
Crudelis, вообщем вроде теперь ошибок нет, но он не считает ввожу а, ввожу б и все окно закрылось...а все так красиво сначала было!
0
В астрале
Эксперт С++
8048 / 4805 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
15.09.2010, 00:05 17
Добавьте std::cin.get(), system("pause") перед return 0.
Что-то одно на выбор
0
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
15.09.2010, 00:10  [ТС] 18
Lavroff, всеее урааа))) спасибо!!!! и откуда такие молодцы берутся!! вот мне бы((
я наверно совсем тупая-а препод придира, что значат строчки с 12-18)
cnt-новая переменная присваеваем 0,
задаем цикл, почему такой?
если остаток от деления равен 0
cnt=1 ....не понимаю что это и далее....
просто хочу еще и сама понимать что написано, а не просто копирнул и все
0
В астрале
Эксперт С++
8048 / 4805 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
15.09.2010, 00:15 19
wild_flower, Окей. Секунду.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<iostream>
 
int main()
{
int a=0,b=0;
std::cout<<"a=";
std::cin>>a;
std::cout<<"b=";
std::cin>>b;
for(int i=a;i<=b;i++)//Цикл от a до b
{
    if(i==1||i==0||i<0)
       continue;
    int cnt=0;//Заводим новую переменную типа int. Присваиваем начальное значение 0.
    for(int j=2; j<=i/2; ++j)//от 2 до i/2. Начинаем от двух, так как любое число делится на 1, и если число делится на 1, оно остается простым. Следовательно проверять смысла нет. Идем до i/2 потому как больше чем i/2 делителя у числа i быть не может. Для 34 - максимум 17, для 28 - максимум 14 и т.д. Само число всегда делится на само себя, поэтому мы не идем циклом до i а заканчиваем если j=i/2.
    {
         if(i%j==0)//Если остаток от деления i на j = 0
            cnt=1;//cnt=1;
    }
    if(cnt==0)//Если число i не делилось ни на какое число j без остатка, то есть cnt=0
       std::cout<<i<<'\n';//Печатаем i
}
std::cin.get();//Пока не нажмем клавишу программа не завершится (то есть окно консоли не закроется сходу).
return 0; 
}
0
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
15.09.2010, 00:17  [ТС] 20
Lavroff, кстати сейчас проверила, если вводишь единицу он пишет ее как простое число, а она не простое число(исключение)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.09.2010, 00:17
Помогаю со студенческими работами здесь

Найти простые числа в заданном диапазоне с помощью решета Эратосфена и вывести их в файл
Для зачета задали написать программу для нахождения простых чисел от 1 до 1000000000 и вывод их в...

Вывести все простые числа в заданном диапазоне, которые являются палиндромами
Напишите программу , которая выводит все простые числа , которые являются палиндромами ( то есть...

Найти все простые числа в диапазоне
Вообщем, такая дилемма, С++ только начали, уже задали задачу: пользователь вводит начало и конец...

Найти простые числа в диапазоне от 1 до 1000
Задание звучит так Написать программу поиска простых чисел из множества натуральных чисел от 1 до...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru