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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вывод простых чисел 
:(
    Опции темы
Nuha
  Дата 30.10.2008, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А как еще создать программу, которая выводит на экран простые числа в диапазоне от 2 до 1000
PM MAIL WWW ICQ   Вверх
ИванМ
Дата 30.10.2008, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

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



К примеру можно проверить, делится ли N-е число без остатка на каждое из предыдущих. Если не делится без остатка ни на одно, то оно простое.
Но наверняка есть более простые алгоритмы. Но я их не знаю.
PM MAIL   Вверх
TwisT_X
Дата 30.10.2008, 19:53 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


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

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



Код

for (int candidat=2; candidat<1000; candidat++)
  for (int faktor=2; faktor<candidat; faktor++)
    if (candidat % faktor == 0)
      {
        break;
      }
      else // вывод резултата;


Написал на Си.. думаю все доступно и понятно..


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
Rodman
Дата 30.10.2008, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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




M
Rodman
Модератор: Название темы должно содержать язык написания!

PM MAIL WWW Skype GTalk YIM MSN   Вверх
IKM2007
Дата 30.10.2008, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


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

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



Цитата(Nuha @  30.10.2008,  18:29 Найти цитируемый пост)
А как еще создать программу, которая выводит на экран простые числа в диапазоне от 2 до 1000

Уже написал в предидущей теме.

Зачем создал новую тему для уже заданного вопроса? smile 


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
Nuha
Дата 30.10.2008, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Так можете обьяснить как вывести простые числа из определенного диапазона?  На языке С++ smile 
PM MAIL WWW ICQ   Вверх
ИванМ
Дата 30.10.2008, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

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



Nuha , тебе TwisT_X написал.
PM MAIL   Вверх
TwisT_X
Дата 31.10.2008, 01:01 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


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

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



Код

// библиотеки подключишь сам надеюсь :)

void main (void)
{
  for (int candidat=2; candidat<1000; candidat++)
  for (int faktor=2; faktor<candidat; faktor++)
    if (candidat % faktor == 0)
      {
        break;
      }
      else pirntf("%d ", candidat);
getch();
}


Вот тебе подсветка кода на С++.. Есть вопросы? Перменыне специально назвал так что бы было понятно что где smile


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
rooks
Дата 31.10.2008, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



2Nuha
классическое решение задачи - Решето Эратосфена
иходники искать в гугле, в интернете их тьма тьмущая

Это сообщение отредактировал(а) rooks - 31.10.2008, 12:46
PM MAIL ICQ   Вверх
TwisT_X
Дата 31.10.2008, 13:05 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


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

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



rooks, это самый оптимальный вариант.. зачем еще что-то искать?


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
IKM2007
Дата 31.10.2008, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


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

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



Цитата(TwisT_X @  31.10.2008,  13:05 Найти цитируемый пост)
rooks, это самый оптимальный вариант.. зачем еще что-то искать?

Во первых твой код не корректно работает, ты компилировал?
Во вторых это можно сказать самый неоптимальный вариант, так как количество шагов максимальна.

Это сообщение отредактировал(а) IKM2007 - 31.10.2008, 13:55


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
volvo877
Дата 31.10.2008, 14:00 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(TwisT_X @  31.10.2008,  12:05 Найти цитируемый пост)
это самый оптимальный вариант.. зачем еще что-то искать? 
Оптимальный по какому критерию, можно уточнить? Уж не по скорости ли? Запусти решето Аткина (найдешь сам, я надеюсь?) и убедись, что твой алгоритм не в состоянии обработать первую сотню чисел за то же время, как Аткин обрабатывает тысячи (если не десятки тысяч)...

А может быть, оптимальность - это правильный вывод? Посмотрим:

Цитата(TwisT_X @  31.10.2008,  00:01 Найти цитируемый пост)
Код
// библиотеки подключишь сам надеюсь :)
  for (int candidat=2; candidat<20; candidat++) // <--- Единственное изменение !!!
  for (int faktor=2; faktor<candidat; faktor++)
    if (candidat % faktor == 0)
      {
        break;
      }
      else pirntf("%d ", candidat);
getch();



Цитата
3 5 5 5 7 7 7 7 7 9 11 11 11 11 11 11 11 11 11 13 13 13 13 13 13 13 13 13 13 13 15 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
Process returned 0 (0x0)   execution time : 0.031 s
Press any key to continue.


Извини, но 9 - это никак не простое число. Да и 15 тоже... Почему же твоя программа их выводит? Зачем мне десятки раз повторять вывод одного и того же числа? Чтоб оптимальности добавить? Я уж не говорю о том, что не компилирует его в приведенном тобой виде GCC...

Это сообщение отредактировал(а) volvo877 - 31.10.2008, 14:01
PM MAIL   Вверх
Nuha
Дата 31.10.2008, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну а кто может предложить оптимальный вариант? smile  
PM MAIL WWW ICQ   Вверх
ИванМ
Дата 31.10.2008, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

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



Чуть переделаю TwisT_X 


Код

#include <iostream>

using namespace std;

void printsimple(int start, int end)
{
for (int candidat=start; candidat<end; candidat++)
{
    bool b=false;
    for (int faktor=start; faktor<candidat; faktor++)
    {
        if (candidat % faktor == 0)
        {
            b=true;
            break;
        }
    }
    if(!b)
        cout<<candidat<<endl;
}
}

int main()
{
    printsimple(2,1000);
    system("pause");
    return 0;
}


Не оптимально, но зато работает smile 

Это сообщение отредактировал(а) ИванМ - 31.10.2008, 16:07
PM MAIL   Вверх
IKM2007
Дата 31.10.2008, 16:41 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


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

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



Цитата(Nuha @  31.10.2008,  15:30 Найти цитируемый пост)
Ну а кто может предложить оптимальный вариант?


Nuha, я же сказал, что уже ответил в первой теме. Вот код.
Код

#include <iostream>
using std::cout;
using std::endl;
bool prost(int x)
{
if(x<=1)
return false;
if(x==2||x==3)
return true;
if(!(x%2))
return false;
for(int i=3;i*i<=x;i+=2)
if(!(x%i))
return false;
return true;
}
void main()
{
cout<<"2\n";
for(int i=3;i<1000;i+=2)
if(prost(i))
cout<<i<<endl;

}



--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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