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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2012, 21:49   #1
Erlotaza
Пользователь
 
Регистрация: 13.02.2012
Сообщений: 37
По умолчанию Это не ДЗ!!! Не могу найти ошибку (начинающий С++)

Здравствуйте, читаю сейчас "Г. Шилдт. C++: руководство для начинающих". Там есть задания в конце разделов: ""Напишите программу, которая находит все простые числе в интервале от 1 до 100.""
Ну я попробовал так:

Код:
#include <vcl.h>
#include <iostream>
using namespace std;

int main()
{
 int i,j;
 for (i=5; i<=100; i++)
 for (j=2; j<=i/2; j++)
  if (i%j!=0)
  cout << i << " - prostoe chislo\n";
  getchar ();

 return 0;
}
Не работает нормально: на каждое число по не сколько раз выбивает "K - prostoe chislo". В чём ошибка?

Последний раз редактировалось ACE Valery; 09.04.2012 в 12:01.
Erlotaza вне форума Ответить с цитированием
Старый 08.04.2012, 21:56   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,427
По умолчанию

Код:
#include <iostream>
using namespace std;

int main()
{
    int i,j,t;
    for (i=2; i<=100; i++)
    {
        t=1;
        for (j=2; j<=i/2; j++)
            if (i%j==0)
                t=0;
        if (t)
            cout << i << " - prostoe chislo\n";
    }
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 08.04.2012, 22:00   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну а почему число простое, если оно не разделилось без остатка на одно из чисел в интервале от 2 до число/2? Погугли, найдешь кучу решений.

И используй тег [CODE] (значок # ) для сохранения форматирования и подсветки кода в сообщении, а не синий цвет)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.04.2012, 22:12   #4
Erlotaza
Пользователь
 
Регистрация: 13.02.2012
Сообщений: 37
По умолчанию

Спасибо, но я не понимаю, зачем там t...
Без него можна обойтись? Или, если сможете, объясните пожалуйста, зачем что оно делает?
Erlotaza вне форума Ответить с цитированием
Старый 08.04.2012, 22:19   #5
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

А нет, там все нормально!
Помог - жми на весы!
ByAlex89@mail.ru

Последний раз редактировалось ByAlex; 08.04.2012 в 22:22.
ByAlex вне форума Ответить с цитированием
Старый 08.04.2012, 22:22   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,427
По умолчанию

Чтобы утверждать, что число простое, нужно проверить на все числа от 2 до n/2 (хотя лучше брать до корня из числа).
Если разделилось хотя бы на одно из этих чисел, то число составное.
Т выступает в роли флага. Или вариант с меткой:
Код:
#include <iostream>
using namespace std;

int main()
{
    int i,j,t;
    for (i=2; i<=100; i++)
    {
        j=2;
        while (j<=i/j)
        {
            if (i%j==0)
                goto end;
            j++;
        };
        cout << i << " - prostoe chislo\n";
    end:;
    }
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 08.04.2012 в 22:25.
BDA вне форума Ответить с цитированием
Старый 08.04.2012, 22:26   #7
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Цитата:
ByAlex, я надеюсь, вы свой код запускали Вы выводите все числа, которые НЕ являются простыми.
Да я знаю, глюканул что то!
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 08.04.2012, 22:36   #8
Erlotaza
Пользователь
 
Регистрация: 13.02.2012
Сообщений: 37
По умолчанию

Благодарю !
Erlotaza вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу найти ошибку Nix128 Microsoft Office Excel 8 24.05.2011 15:05
НЕ могу найти ошибку T.A.T.A.R.I.N Паскаль, Turbo Pascal, PascalABC.NET 2 06.03.2011 10:45
Не могу найти ошибку 18541 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 16.12.2010 15:53
Не могу найти ошибку IgorGO Microsoft Office Excel 11 17.09.2010 16:28
Не могу найти ошибку maxistudent Общие вопросы C/C++ 6 29.04.2010 20:52