Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
TecktoTrance
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 13
#1

Простые числа, или как это работает? - C++

21.03.2013, 19:02. Просмотров 429. Ответов 7
Метки нет (Все метки)

Доброго времени суток всем участникам этого форума =) У меня как у начинающего программиста возникла затрудняющая ситуация, есть готовый код программы, но как он действует не до конца понимаю
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;
void main(){
 
int digit=0;
for(int i=2;i<=1000;i++){
    for(int j=1;j<=i;j++){
        if(i==2){
            continue;
        }
        if(i%j==0){
            digit++;
        }
    
        if(j==i/2&&digit==1){
            cout<<i<<endl;
            digit=0;
        }
        if(digit>1){
            digit=0;
    break;}
        }
}
}
Эта программа выводит все простые числа от 3 до 997(по условию нужно вывести все простые числа от 2 до 1000, но 1 и 2 не считаются как простые числа), читая код этой программы у меня возник некий вопрос:
была создана переменная digit и присвоено значение 0, она сыграла роль счетчика, ну а конкретно как этот счетчик сработал мне не ясно =/
В логических операторах if были созданы условия: вычеркивать из списка все четные числа(так как они не есть простые числа) и выводить числа которые делятся на единицу и на само себя, и тут влезает мне в голову эта самая переменная digit, которая играет роль в этом коде, то увеличивает свое значение то снова ей присваивается 0.
Люди добрые кто как может, яснее просветите меня как же работает этот код ( пробовал пробежаться отладчиком и посмотреть как же все таки он срабатывает, и тут меня обрек жестокий Fail, меня повело черт знает куда)
Заранее спасибо за участие в теме =)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2013, 19:02     Простые числа, или как это работает?
Посмотрите здесь:

Вывести простые числа от a до n (while или for) - C++
Подскажите пожалуйста, как реализовать вывод на экран всех простых чисел от a до n при помощи цикла (while или for)?

Как это работает? - C++
#include &lt;iostream&gt; int *fun() { int a = 5; return &amp;a; } int main() { int *ptr = fun(); std::cout &lt;&lt;...

Как это работает? - C++
Читаю я кое какой &quot;учебник&quot;, и в нём появился такой вот кусок кода int input (tank&amp; t, char map) { char act; int ch; int e =...

Как это работает? - C++
#include &lt;iostream&gt; #include &lt;cstring&gt; using namespace std; int main() { char* s=new char; ...

Как это работает? - C++
Здравствуйте, можете, пожалуйста, поэтапно объяснить как работает приведенный ниже фрагмент кода? Что такое floor, return, ceil? double...

Как это работает? - C++
Доброго времени суток. Граждане программисты, подскажите пожалуйста как работает данный кусок кода??? А точнее дружественные функции...

Как это работает - C++
Здравствуйте уважаемые форумчане!Как это работает? Как например предотвратить выход за приделы допустимых значений переменных!? ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
Эксперт C
15830 / 10157 / 1522
Регистрация: 24.12.2010
Сообщений: 19,141
21.03.2013, 19:34     Простые числа, или как это работает? #2
Цитата Сообщение от TecktoTrance Посмотреть сообщение
2 не считаются как простые числа
2 - простое число

Добавлено через 3 минуты
Чрезвычайно нелепый код. Откуда вы его взяли? Сами создали?
Поищите на форуме. Тут сотни программ, находящих простые числа. И некоторые вполне приемлемы.
TecktoTrance
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 13
21.03.2013, 20:00  [ТС]     Простые числа, или как это работает? #3
Цитата Сообщение от Байт Посмотреть сообщение
2 - простое число

Добавлено через 3 минуты
Чрезвычайно нелепый код. Откуда вы его взяли? Сами создали?
Поищите на форуме. Тут сотни программ, находящих простые числа. И некоторые вполне приемлемы.
Уважаемы вы читали что я описал выше ?
По условию задания "2" не считается простым числом! это во первых , во вторых код написан не мной, но если вам есть что сказать по тому что я попросил, отвечайте, не флудите "откуда такая нелепость ?", работает- это уже хорошо, но как работает еще интересней хотелось бы узнать!
Искал я на форуме подобные темы и там предоставляли более сложный код, а мой багаж знаний не велик(логические операторы if else switch, циклы while do while for и вложенные циклы в цикл, этим всем я должен был пользоваться для решения данного задания.
fjay69
85 / 85 / 1
Регистрация: 26.10.2012
Сообщений: 248
21.03.2013, 20:10     Простые числа, или как это работает? #4
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
#include <iostream>
using namespace std;
void main(){
 
int digit=0;//количество чисел, которые делят i без остатка
for(int i=2;i<=1000;i++){//число, которое проверяют
    for(int j=1;j<=i;j++){//делитель
        if(i==2){//пропустить
            continue;
        }
        if(i%j==0){//если делится без остатка
            digit++;
        }
    
        if(j==i/2&&digit==1){//когда делитель больше половины делимого
//и когда только одно число, которое делит i без остатка, больше нет смысла подбирать числа
 
            cout<<i<<endl;
            digit=0;//сброс digit
        }
        if(digit>1){
            digit=0;//текущее число не простое. сброс digit
    break;}
        }
}
}
HighPredator
5474 / 1840 / 342
Регистрация: 10.12.2010
Сообщений: 5,431
Записей в блоге: 3
21.03.2013, 21:56     Простые числа, или как это работает? #5
Цитата Сообщение от TecktoTrance Посмотреть сообщение
мой багаж знаний не велик
Раз ваш багаж не велик, потрудитесь четко излагать мысли, чтобы не вводить людей в заблуждение. И поспокойнее себя ведите.
Байт
Эксперт C
15830 / 10157 / 1522
Регистрация: 24.12.2010
Сообщений: 19,141
21.03.2013, 22:59     Простые числа, или как это работает? #6
Цитата Сообщение от TecktoTrance Посмотреть сообщение
но если вам есть что сказать по тому что я попросил, отвечайте, не флудите
Уже нечего. Просто не хочется говорить.
Цитата Сообщение от TecktoTrance Посмотреть сообщение
как работает еще интересней хотелось бы узнать!
Все-таки открою вам маленький секрет. Хотя ваша агрессивность к этому не располагает. Это делается так. Включаете отладочный режим. Смотрите по шагам, что происходит в вашей программке, значения переменных и почему программа выбирает тот или иной путь. Возможно, с отладочным режимом могут быть затруднения. (Лично я его терпеть не могу). Тогда в те места, которые вам кажутся непонятными, вставляете отладочную печать, типа
C++
1
cout<<degit
Если выдачи получается очень много (не помещается на экранчик), запускаете программу так
Код
 прога.exe >deb.txt
и с удовольствием анализируете получившийся файл.
Смею вас уверить, что такой подход даст вам значительно больше, чем скуление на форумах.
Удачи!
TecktoTrance
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 13
21.03.2013, 23:33  [ТС]     Простые числа, или как это работает? #7
Цитата Сообщение от HighPredator Посмотреть сообщение
Раз ваш багаж не велик, потрудитесь четко излагать мысли, чтобы не вводить людей в заблуждение. И поспокойнее себя ведите.
Пардон, то есть что вам не ясно ? Человек выше(fjay69) дал ответ на поставленный мною вопрос, или он тоже в заблуждении ?
И за спокойствие попрошу не беспокоится, аггро метр не превышал и нуля, или таки ваша защита Форумчан ?
Никого я здесь не оскорблял, и не за этим сюда пришел, а его ответ увы меня удивил!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2013, 00:05     Простые числа, или как это работает?
Еще ссылки по теме:

Как пробежаться по диапозону чисел , нужно найти простые числа в диапозоне от а до b (a<b) - C++
Задание необходимо сделать через цикл for, но я не могу понять как можно пробежаться от а до б , и вычислить простые числа?? Вот и...

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

объясните как это работает - C++
#include &lt;iostream&gt; #include &lt;algorithm&gt; using namespace std; long func (long * arr, int length) { return...

Динамический массив, много циклов и простые числа. Как ускорить работу программы ? - C++
Всем привет. Задание следующее: Кто нибудь вводит с клавиатуры число n и k, должен создастся массив из чисел от 1 до n, далее каждый...

Методы доступа - как это работает? - C++
Здравствуйте, я изучаю С++ по книге Джесс Либерти: Освой самостоятельно C++ за 21 день. Мой вопрос, наверное, глупый, но хочется просто...


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

Или воспользуйтесь поиском по форуму:
HighPredator
22.03.2013, 00:05     Простые числа, или как это работает?
  #8
 Комментарий модератора 
Ответ на вопрос получен. Тема закрыта.
Yandex
Объявления
22.03.2013, 00:05     Простые числа, или как это работает?
Закрытая тема Создать тему
Опции темы

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