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

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

Восстановить пароль Регистрация
 
TecktoTrance
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 13
21.03.2013, 19:02     Простые числа, или как это работает? #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
#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, меня повело черт знает куда)
Заранее спасибо за участие в теме =)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
 Аватар для Байт
13993 / 8824 / 1231
Регистрация: 24.12.2010
Сообщений: 15,990
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
 Аватар для 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
 Аватар для HighPredator
5352 / 1735 / 320
Регистрация: 10.12.2010
Сообщений: 5,120
Записей в блоге: 3
21.03.2013, 21:56     Простые числа, или как это работает? #5
Цитата Сообщение от TecktoTrance Посмотреть сообщение
мой багаж знаний не велик
Раз ваш багаж не велик, потрудитесь четко излагать мысли, чтобы не вводить людей в заблуждение. И поспокойнее себя ведите.
Байт
 Аватар для Байт
13993 / 8824 / 1231
Регистрация: 24.12.2010
Сообщений: 15,990
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     Простые числа, или как это работает?
Еще ссылки по теме:

Русификация.Работает-супер! Обьяснитте, как это работает? C++
C++ Как это работает?
Как это работает? Я хочу спросить как работает C++ и где можно про него почитать C++

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

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

Текущее время: 13:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru