Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
TecktoTrance
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 13
1

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

21.03.2013, 19:02. Просмотров 485. Ответов 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, меня повело черт знает куда)
Заранее спасибо за участие в теме =)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2013, 19:02
Ответы с готовыми решениями:

как соединить b и с в число, если а это число, б это десятки перевернутого числа, с это единицы перевернутого числа вот в это строчке c=a+b,c;
как соединить b и с в число, если а это число, б это десятки перевернутого...

Разбить N на более простые числа, в сумме дающие это N
Нашел я как-то в одной книге задачу. До сих пор бьюсь над ее решением. Может...

Вывести простые числа от a до n (while или for)
Подскажите пожалуйста, как реализовать вывод на экран всех простых чисел от a...

Найти все трехзначные простые числа. Определить функцию позволяющую распознавать простые числа
Найти все трехзначные простые числа. Определить функцию позволяющую...

Задача про простые числа. Выпишите все простые числа, находящиеся в интервале между а и б
#include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt;...

7
Байт
Эксперт C
19230 / 12355 / 2607
Регистрация: 24.12.2010
Сообщений: 25,443
21.03.2013, 19:34 2
Цитата Сообщение от TecktoTrance Посмотреть сообщение
2 не считаются как простые числа
2 - простое число

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

Добавлено через 3 минуты
Чрезвычайно нелепый код. Откуда вы его взяли? Сами создали?
Поищите на форуме. Тут сотни программ, находящих простые числа. И некоторые вполне приемлемы.
Уважаемы вы читали что я описал выше ?
По условию задания "2" не считается простым числом! это во первых , во вторых код написан не мной, но если вам есть что сказать по тому что я попросил, отвечайте, не флудите "откуда такая нелепость ?", работает- это уже хорошо, но как работает еще интересней хотелось бы узнать!
Искал я на форуме подобные темы и там предоставляли более сложный код, а мой багаж знаний не велик(логические операторы if else switch, циклы while do while for и вложенные циклы в цикл, этим всем я должен был пользоваться для решения данного задания.
0
fjay69
87 / 87 / 17
Регистрация: 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;}
        }
}
}
1
HighPredator
5689 / 2008 / 723
Регистрация: 10.12.2010
Сообщений: 5,774
Записей в блоге: 3
21.03.2013, 21:56 5
Цитата Сообщение от TecktoTrance Посмотреть сообщение
мой багаж знаний не велик
Раз ваш багаж не велик, потрудитесь четко излагать мысли, чтобы не вводить людей в заблуждение. И поспокойнее себя ведите.
2
Байт
Эксперт C
19230 / 12355 / 2607
Регистрация: 24.12.2010
Сообщений: 25,443
21.03.2013, 22:59 6
Цитата Сообщение от TecktoTrance Посмотреть сообщение
но если вам есть что сказать по тому что я попросил, отвечайте, не флудите
Уже нечего. Просто не хочется говорить.
Цитата Сообщение от TecktoTrance Посмотреть сообщение
как работает еще интересней хотелось бы узнать!
Все-таки открою вам маленький секрет. Хотя ваша агрессивность к этому не располагает. Это делается так. Включаете отладочный режим. Смотрите по шагам, что происходит в вашей программке, значения переменных и почему программа выбирает тот или иной путь. Возможно, с отладочным режимом могут быть затруднения. (Лично я его терпеть не могу). Тогда в те места, которые вам кажутся непонятными, вставляете отладочную печать, типа
C++
1
cout<<degit
Если выдачи получается очень много (не помещается на экранчик), запускаете программу так
Код
 прога.exe >deb.txt
и с удовольствием анализируете получившийся файл.
Смею вас уверить, что такой подход даст вам значительно больше, чем скуление на форумах.
Удачи!
0
TecktoTrance
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 13
21.03.2013, 23:33  [ТС] 7
Цитата Сообщение от HighPredator Посмотреть сообщение
Раз ваш багаж не велик, потрудитесь четко излагать мысли, чтобы не вводить людей в заблуждение. И поспокойнее себя ведите.
Пардон, то есть что вам не ясно ? Человек выше(fjay69) дал ответ на поставленный мною вопрос, или он тоже в заблуждении ?
И за спокойствие попрошу не беспокоится, аггро метр не превышал и нуля, или таки ваша защита Форумчан ?
Никого я здесь не оскорблял, и не за этим сюда пришел, а его ответ увы меня удивил!
0
HighPredator
22.03.2013, 00:05     Простые числа, или как это работает?
  #8
 Комментарий модератора 
Ответ на вопрос получен. Тема закрыта.
0
22.03.2013, 00:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2013, 00:05
Привет! Вот еще темы с ответами:

Как это работает? Я хочу спросить как работает C++ и где можно про него почитать
Привет, котоны. Заранее благодарю. Это будет моих общих вопросов нить, т.к....

Русификация.Работает-супер! Обьяснитте, как это работает?
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;windows.h&gt; using...

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


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

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

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