Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.90
wild_flower
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
#1

простые числа в заданном диапазоне - C++

14.09.2010, 23:12. Просмотров 3607. Ответов 23
Метки нет (Все метки)

помогите пожалуйста написать программку...я все уже тут посмотрела, никак не могу реализовать её
Найти все простые числа заданном диапазоне(не массив), например вводим а=5, в=30 -в этом диапазоне найти простые числа. Использовать только цикл, может условия какие. больше никаких прибамбасов нельзя, не прошли) на С++
очень прошу, уже битый час мучаюсь...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2010, 23:12
Я подобрал для вас темы с готовыми решениями и ответами на вопрос простые числа в заданном диапазоне (C++):

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

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

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

Найти простые числа в заданном диапазоне с помощью решета Эратосфена - C++
Задача: вывести простые числа в диапозоне от А до В. ( 2 ≤ А и ≤ В ≤ 100000 ) Если таких чисел нет - вывести "Fol". Желательно с...

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

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

23
wild_flower
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
15.09.2010, 00:02  [ТС] #16
Crudelis, вообщем вроде теперь ошибок нет, но он не считает ввожу а, ввожу б и все окно закрылось...а все так красиво сначала было!
0
ForEveR
В астрале
Эксперт С++
7992 / 4751 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
15.09.2010, 00:05 #17
Добавьте std::cin.get(), system("pause") перед return 0.
Что-то одно на выбор
0
wild_flower
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
15.09.2010, 00:10  [ТС] #18
Lavroff, всеее урааа))) спасибо!!!! и откуда такие молодцы берутся!! вот мне бы((
я наверно совсем тупая-а препод придира, что значат строчки с 12-18)
cnt-новая переменная присваеваем 0,
задаем цикл, почему такой?
если остаток от деления равен 0
cnt=1 ....не понимаю что это и далее....
просто хочу еще и сама понимать что написано, а не просто копирнул и все
0
ForEveR
В астрале
Эксперт С++
7992 / 4751 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
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
wild_flower
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
15.09.2010, 00:17  [ТС] #20
Lavroff, кстати сейчас проверила, если вводишь единицу он пишет ее как простое число, а она не простое число(исключение)
0
ForEveR
В астрале
Эксперт С++
7992 / 4751 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
15.09.2010, 00:26 #21
wild_flower, От 0 до 1 то есть если?) Ну да. Сейчас добавлю

Добавлено через 2 минуты
Поправил. Если i=1 переходим к следующей итерации цикла. Код выше. А так же с нулем залатал. Ну и с отрицательными.

Добавлено через 5 минут
Финальный вариант. Если i<=1 переходим к следующей итерации цикла.

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
28
#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)
       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;
            break;//Выходим из цикла по j. Выходим на проверку условия if(cnt==0). Следовательно если сnt=1 - ничего не печатает.
         }
    }
    if(cnt==0)//Если число i не делилось ни на какое число j без остатка, то есть cnt=0
       std::cout<<i<<'\n';//Печатаем i
}
std::cin.get();//Пока не нажмем клавишу программа не завершится (то есть окно консоли не закроется сходу).
return 0; 
}
1
wild_flower
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
15.09.2010, 00:28  [ТС] #22
Lavroff, в 19 строчке cnt=1 это просто переменная равна 1? неа если вводим а=1 то потом прога стоит и все
0
ForEveR
В астрале
Эксперт С++
7992 / 4751 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
15.09.2010, 00:29 #23
wild_flower, А b то вводить не забываем, м?
ЗЫ Да просто приравниваем переменную 1. Там можно еще break поставить
Выше с break. Разбор с 1 вроде там тоже есть. Или вы вводите 1 1?)
1
wild_flower
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
15.09.2010, 00:48  [ТС] #24
Lavroff, ладно, взрыв мозга)) спасибо огромное... с меня шоколадка!!!
0
15.09.2010, 00:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2010, 00:48
Привет! Вот еще темы с ответами:

простые числа в диапазоне.. - C++
задача-вывести все простые числа в диапазоне от М до N (диапазон с клавиатуры) может быть есть простой более метод нахождения...

Вывести все простые числа в диапазоне от a до b - C++
Напишите программу , которая вводит натуральные числа a и b и выводит все простые числа в диапазоне от a до b . Здравствуйт, помогите...

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru