Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод простых чисел 
V
    Опции темы
odalun
Дата 16.4.2014, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 16.4.2014

Репутация: нет
Всего: нет



Здравствуйте, не могу разобраться. Второй цикл первый раз не запускается т.к. по условию y <= (x/y), после этого инкрементируется первый цикл и x уже идет с тройкой, потом по условию y <= (x/y), три делиться на два и получается 1.5 но т.к. это тип инт он округляется до 2? Я правильно понял? 
Почему тогда при выполнении программы выводится двойка, если по условию 11 строчки остача не должна равняться 0? не пойму как она может вывестись если при первом запуске цикла x идет с двойкой и условие  y = (x/y) не удовлетворяется, это получается 2 <= (2/2)?

Код
#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 << " - простое число\n";
    }
}


Модератор: не забываем пользоваться кнопочкой "Код"

Это сообщение отредактировал(а) bsa - 16.4.2014, 17:40
PM MAIL   Вверх
bsa
Дата 16.4.2014, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(odalun @  16.4.2014,  18:06 Найти цитируемый пост)
т.к. это тип инт он округляется до 2? Я правильно понял?
нет. округление производится к ближайшему меньшему по модулю целому. Т.е. 1/2 = 0, 3 / 2 = 1, -5/2 = -2

PM   Вверх
odalun
Дата 16.4.2014, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 16.4.2014

Репутация: нет
Всего: нет



Так почему тогда программа выводит числа 2 и 3?
PM MAIL   Вверх
feodorv
Дата 16.4.2014, 19:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(odalun @  16.4.2014,  18:49 Найти цитируемый пост)
Так почему тогда программа выводит числа 2 и 3? 

Ну, 2 и 3 - простые числа, не? 


Цитата(odalun @  16.4.2014,  18:06 Найти цитируемый пост)
        for (y = 2; y <= (x/y); y++)
        if(!(x%y)) break;

       if (y > (x/y)) cout << x << " - простое число\n";

Тупо подставим x равное 2:
Код

        for (y = 2; y <= (2/y); y++)
        if(!(2%y)) break;

       if ( y > (2/y)) cout << 2 << " - простое число\n";

Видно, что цикл по y вообще не выполнится ни разу (так как при стартовом y, равном 2, имеем условие выхода из цикла 2 <= 1, что есть false). y при этом есть 2. Поэтому нижнее условие приобретает вид 2 > 1, что есть true, поэтому происходит печать.


Тупо подставим x равное 3:
Код

        for (y = 2; y <= (3/y); y++)
        if(!(3%y)) break;

       if ( y > (3/y)) cout << 3 << " - простое число\n";

Видно, что цикл по y вообще не выполнится ни разу (так как при стартовом y, равном 2, имеем условие выхода из цикла 2 <= 1, что есть false). y при этом есть 2. Поэтому нижнее условие приобретает вид 2 > 1, что есть true, поэтому происходит печать.

Всё правильно smile 


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
odalun
Дата 16.4.2014, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 16.4.2014

Репутация: нет
Всего: нет



Спасибо, все ясно понятно smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0917 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.