Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.04.2009, 12:37   #1
Lunex.08
Форумчанин
 
Аватар для Lunex.08
 
Регистрация: 25.02.2009
Сообщений: 145
По умолчанию Нахождение простых чисел.

Помогите пожалуйста разобраться,как действует программа?Она находит все простые числа от 2 до 10.
Код:
Код:
 #include <iostream>
using namespace std;
int main ()
 {
   int x,y;
    for(x=2;x<10;x++){
                        for (y=2;y<=(x/y);y++)
                        if (!(x%y)) break;
                        if (y>(x/y)) cout << x << " -prost. number\n";
                        }
                       getchar ();
                       return 0;
                        }
Меня именно интересуют строки 7 и 9.Как именно работает код в этих строках?
Заранее спасибо за помощь!
Компьютеры бесподобны: за несколько минут они могут совершить такую грандиозную ошибку, какую не в состоянии сделать множество людей за многие месяцы.

Последний раз редактировалось MaTBeu; 09.04.2009 в 19:24.
Lunex.08 вне форума
Старый 08.04.2009, 12:45   #2
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Строка 7 - это цикл. Первоначально задается "y=2", цикл выполняется до тех пор, пока "y" меньше чем "x/y", после каждого прохода цикла, к "y" прибавляется единица (оператор y++)

Строка 9 - условное выражение. Если "y" больше чем "x/y" печатается значение переменной "x" и строка "-prost. number"
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума
Старый 08.04.2009, 12:47   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Цитата:
Сообщение от Lunex.08 Посмотреть сообщение
7. for (y=2;y<=(x/y);y++)
8. if (!(x%y)) break;
9. if (y>(x/y)) cout << x << " -prost. number\n";
7. Цикл от y = 2, пока y меньше, чем (x/y).
8. Если остаток от деления x на y равен нулю, то досрочно выходим из цикла
9. Если y больше, чем (x/y), то выводим в консоль, что x - это простое число. Это условие выполнится только если по строке 8 не вышли из цикла, т.е. не нашли такое число, на которое x делится без остатка
pu4koff вне форума
Старый 09.04.2009, 09:01   #4
Lunex.08
Форумчанин
 
Аватар для Lunex.08
 
Регистрация: 25.02.2009
Сообщений: 145
По умолчанию

Так в строке 7 переменная y изначально < чем результат деления x/y.И получается y > чем возможно.И инициализации не должно быть.
Компьютеры бесподобны: за несколько минут они могут совершить такую грандиозную ошибку, какую не в состоянии сделать множество людей за многие месяцы.
Lunex.08 вне форума
Старый 09.04.2009, 10:25   #5
wyvern
Форумчанин
 
Аватар для wyvern
 
Регистрация: 24.03.2009
Сообщений: 215
По умолчанию

Если условие сразу же не выполняется, например
Код:
for(int i=10;i<5;i++){
    cout << "LOL" << endl;
}
то цикл не выполняется ни разу.
wyvern@localhost:~$ sudo emerge --unmerge world
wyvern вне форума
Старый 09.04.2009, 13:08   #6
Lunex.08
Форумчанин
 
Аватар для Lunex.08
 
Регистрация: 25.02.2009
Сообщений: 145
По умолчанию

Так я про это и спрашиваю.В моем коде переменная y < чем результат деления.И по идее y не должна инициализироваца и не должен выполняться цикл.
Компьютеры бесподобны: за несколько минут они могут совершить такую грандиозную ошибку, какую не в состоянии сделать множество людей за многие месяцы.
Lunex.08 вне форума
Старый 09.04.2009, 18:38   #7
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от Lunex.08 Посмотреть сообщение
Так я про это и спрашиваю.В моем коде переменная y < чем результат деления.И по идее y не должна инициализироваца и не должен выполняться цикл.
В цикле for сначала выполняется первое действие (в данном случаи инициализация y), потом выполняется второе действие (в данном случаи условие), потом выполняется или не выполняется тело цикла, потом выполняется третье действие (в данном случаи y++), затем снова проверяется условие и выполняется тело цикла. Т.е. ваш цикл начнет выполняться в определенный момент (т.к. x прибавляется), а точнее со 2 шага, когда x станет равным 3
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария

Последний раз редактировалось Blade; 09.04.2009 в 18:41.
Blade вне форума
Старый 10.04.2009, 17:01   #8
Lunex.08
Форумчанин
 
Аватар для Lunex.08
 
Регистрация: 25.02.2009
Сообщений: 145
По умолчанию

Теперь все ясно.
Спасибо !
Компьютеры бесподобны: за несколько минут они могут совершить такую грандиозную ошибку, какую не в состоянии сделать множество людей за многие месяцы.
Lunex.08 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение чисел в матрице bpystep Помощь студентам 12 23.03.2009 00:31
Вывод простых чисел. MAKEDON Помощь студентам 1 10.03.2009 16:55
поиск простых чисел методом решета.программа на С или С++ из_семи Помощь студентам 2 25.02.2009 20:56
нахождение полных чисел Juhn Паскаль, Turbo Pascal, PascalABC.NET 6 09.12.2007 13:14
Нахождение совершенных чисел. Паскаль NikLik Помощь студентам 3 23.11.2007 22:19