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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема написал код ну прога не запускается 
:(
    Опции темы
ergocom
Дата 20.8.2006, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Написал код программы не выдает ошибок и работать не хочет!
Код

#include <iostream>
using namespace std;
int main()
{
    
    int number ;
    int number2;
    for(number=2; number<17; number++){
        for(number2=2; number2<number; number2++){
             if((number%number2)!=0) 
                 continue;
             else 
                 number=true;
             break;
        }
    }

    if(!number){
        cout<<number;
    }  else
        number=false;                   
    return 0;
}


программа должна выводить простые числа  тока не хочет работать


Это сообщение отредактировал(а) Mayk - 22.8.2006, 18:56
PM   Вверх
vinter
Дата 21.8.2006, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



 форматируй код пожалуйста, а то читать совершенно невозможно
У тебя бесконечный цикл:
Код

for(number=2; number<17; number++)
    {
        for(number2=2; number2<number; number2++)
        {

            if((number%number2)!=0)
                continue;
            else // когда nuber = 4 выпадает эта ситуация,                            
                number = TRUE;  //и ты присваиваешь number = 1, цикл идет дальше увеличивая number на 1,                                                                                                           // и он снова равен 4 ситуация будет повторятся до бесконечности
            break;
        }
    }



--------------------
Мой блог
PM MAIL WWW   Вверх
Romikgy
Дата 21.8.2006, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



smile экономия должна быть экономной (с)

Цитата(ergocom @  20.8.2006,  22:21 Найти цитируемый пост)
 number=true;


Цитата(ergocom @  20.8.2006,  22:21 Найти цитируемый пост)
 if(!number)


Цитата(ergocom @  20.8.2006,  22:21 Найти цитируемый пост)
cout<<number;

зачем делаешь все это с одной переменой?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ergocom
Дата 21.8.2006, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Как мне это исправить первый раз сделал бесконечный цыкл 
и как мона проще написать чтоб выводились такие цыфри 1,3, 7, 11,(простые числа)

а то решил переписать код с php и вот к чему ето привело там место $flag=true,
$flag=false, ( а я оставил  number место $flag)

Это сообщение отредактировал(а) ergocom - 21.8.2006, 00:27
PM   Вверх
Rockie
Дата 21.8.2006, 03:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



по-моему это уже есть на форуме. в алгоритмах
нахождение простых чисел. 
Код
//////////////////////////////////////////////////////////////////////////////
//
//  Finding prime numbers
//  (c) Johna Smith, 1996
//
//  Method description:
//   We take a number and try to divide it. If we can divide it
//   without remainder - this is not prime number.
//   We can take into account only odd numbers, because we can
//   divide all even number by 2. Also we can store all prime
//   numbers that are already found in an array and try to divide
//   all new numbers only by numbers from this array.
//   If we want to find all prime numbers less than N the size of
//   the array should be sqrt(N)/2
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>

#define N   160  // so we can find all prime numbers that are less than 100000
#define M   25   // check all numbers less than 250

int Simple[N];
int k=0;
enum {yes,no} simple;

void main(void)
{
 // it's easy: 2 and 3 are prime
 if (M>=2) printf("2\n"); // 2 is simple 'cause we can divide it only by itself and 1
 Simple[k++]=2;
 if (M>=3) printf("3\n");
 Simple[k++]=3;

 // but what we can say about other numbers:
 for(int i=5;i<=M;i+=2)
 {
   simple=yes;
   for(int j=0;j<k;j++)
   {
     if (Simple[j]*Simple[j]>i) break; // other Simple[j] is too big for i
     if ((i%Simple[j])==0) simple=no; // there's no remainder - not prime
   }
   if (simple==yes)
   {
     printf("%d\n",i);
     Simple[k++]=i;
   }
 }
}



--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Romikgy
Дата 21.8.2006, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(ergocom @  20.8.2006,  23:24 Найти цитируемый пост)
 а я оставил  number место $flag

дык введи переменую flag


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ergocom
Дата 22.8.2006, 04:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код


include <iostream>
// выводит простые числа с 1 -19 !
using namespace std;



int main()

{
    

    for(int i=1 ; i<21 ; i+=2)
cout<< i;
    

  return 0;
}


все на много проще просто подумать надо было!
PM   Вверх
zkv
Дата 22.8.2006, 06:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



Цитата(ergocom @ 21.8.2006, 00:24)
и как мона проще написать чтоб выводились такие цыфри 1,3, 7, 11,(простые числа)


Цитата(ergocom @ 22.8.2006, 04:12)

 for(int i=1 ; i<21 ; i+=2)
cout<< i;

я вообще запутался теперь, что такое ПРОСТЫЕ числа smile, мне казалось что до 19 это будут:
1, 2, 3, 5, 7, 11, 13, 17, 19 (насчет 1 не уверен)
PM MAIL   Вверх
Rockie
Дата 22.8.2006, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Простое число - это число, которое делится только на себя и на 1.
Цитата(zkv @  22.8.2006,  06:40 Найти цитируемый пост)
я вообще запутался теперь, что такое ПРОСТЫЕ числа , мне казалось что до 19 это будут:1, 2, 3, 5, 7, 11, 13, 17, 19 (насчет 1 не уверен)

пока да. а дальше 19 + 2 = 21 - уже не простое число, так как делится еще на 7 и 3


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
ergocom
Дата 22.8.2006, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ага  делятся тока сами на себя ! о smile казыватся цыклы сильная вещь!
а как сделать чтоб дальше и 23 шло?
или 21 это изключение !

Это сообщение отредактировал(а) ergocom - 22.8.2006, 07:50
PM   Вверх
zkv
Дата 22.8.2006, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



2ergocom поправьте меня если я не прав, ряд который вы привели в качестве примера простых чисел (1,3, 7, 11), по моему не полный, а ваш цикл:
Код

 for(int i=1 ; i<21 ; i+=2)
cout<< i;
   
вообще выводит нечетные числа вместо простых, все-таки, вы что хотите получить? 

Это сообщение отредактировал(а) zkv - 22.8.2006, 08:00
PM MAIL   Вверх
ergocom
Дата 22.8.2006, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



как мона вывести все цыфры с 1- 100 чтоб они были простыми!
мой цыкл уже не правельно работает так как может вывести 21 и др цыфри еще такие будут!
может мна с использованием 2 цыклов? smile 
PM   Вверх
zkv
Дата 22.8.2006, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



ваш цикл во-первых 21 не выведет, во вторых среди нечетных НЕ простых чисел тоже хватает, а чем собственно не нравится алгоритм предложенный Rockie, выше?
PM MAIL   Вверх
MAKCim
Дата 22.8.2006, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



Цитата

как мона вывести все цыфры с 1- 100 чтоб они были простыми!

Код

#include <iostream>

bool is_simple(unsigned long number)
{
    if (number>0 && number<4)
        return true;
    unsigned long i=2;
    for (; i<number &&
        number%i; ++i);
    return i==number;
}

template<class Stream> void find_sn(
        unsigned long left, 
        unsigned long right, 
        Stream& stream
    )
{
    while (left<=right)
    {
        if (is_simple(left)) 
            stream<<left<<std::endl;
        ++left;
    }
}

int main()
{
    find_sn(1,100,std::cout);
    return 0;
}



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Romikgy
Дата 22.8.2006, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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





--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
albertn
Дата 22.8.2006, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(MAKCim @ 22.8.2006,  09:41)
Цитата

как мона вывести все цыфры с 1- 100 чтоб они были простыми!

Код

#include <iostream>

bool is_simple(unsigned long number)
{
    if (number>0 && number<4)
        return true;
    unsigned long i=2;
    for (; i<number &&
        number%i; ++i);
    return i==number;
}

template<class Stream> void find_sn(
        unsigned long left, 
        unsigned long right, 
        Stream& stream
    )
{
    while (left<=right)
    {
        if (is_simple(left)) 
            stream<<left<<std::endl;
        ++left;
    }
}

int main()
{
    find_sn(1,100,std::cout);
    return 0;
}

Криво, очень криво. Зачем просто так перебирать все делители, если вполне достаточно перебирать уже полученные простые числа, как в предыдущем примере?
PM WWW ICQ   Вверх
MAKCim
Дата 22.8.2006, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



Цитата

Криво, очень криво. Зачем просто так перебирать все делители, если вполне достаточно перебирать уже полученные простые числа, как в предыдущем примере?

Не криво, а нерационально с точки зрения времени выполнения (предыдущий пример требует дополнительной памяти)
да я и не говорил, что мой вариант лучше


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
albertn
Дата 22.8.2006, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(MAKCim @ 22.8.2006,  11:10)
Не криво, а нерационально с точки зрения времени выполнения (предыдущий пример требует дополнительной памяти)
да я и не говорил, что мой вариант лучше

Редко когда простые числа нужны только для вывода на экран. А память сейчас это не главное, по крайней мере в данной программе. Сейчас главное это скорость и универсальность. А если ему надо будет расчитать до 1000 или 10000, то сколько же она тогда будет вычислять?
PM WWW ICQ   Вверх
MAKCim
Дата 22.8.2006, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



Цитата

А если ему надо будет расчитать до 1000 или 10000, то сколько же она тогда будет вычислять? 

меньше секунды на моем PIV
Цитата

 и универсальность.

Вот именно, если мне надо просто проверить, является ли число x>1000000 простым, мне что, надо последовательно находить все простые числа
и делить на них?
м вообще здесь алгоритмы не обсуждаются
человек просил
Цитата

программа должна выводить простые числа  тока не хочет работать

я написал, программа работает и является достаточно универсальной


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
albertn
Дата 22.8.2006, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(MAKCim @ 22.8.2006,  12:38)
я написал, программа работает и является достаточно универсальной

Я это все к тому, что зачем писать код, пусть даже он более простой, если уже разобран пример более универсальной программы?
PM WWW ICQ   Вверх
MAKCim
Дата 22.8.2006, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



Цитата

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

все, не хочу дальше спорить, мир  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
ergocom
Дата 22.8.2006, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Мне надо простой а не с обьектои классом
до них я еще не дошел smile 
PM   Вверх
ergocom
Дата 24.8.2006, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Народ вы правы мне нужны простые числа вот как мона очень легко их найти!  smile 
Код

#include <iostream> 
using namespace std; 

int main() {  
_wsetlocale(LC_ALL, L"Russian");
  int i, j; 
  bool prime; 

  for(i=1; i < 100; i++) { 
    prime = true;  

    
    for(j=2; j <= i/2; j++) 
     
      if((i%j) == 0) prime = false; 

    if(prime) 
      cout << i << "  Простые числа с 1-100\n"; 
  } 

  return 0; 
}


PM   Вверх
pablo
Дата 24.8.2006, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

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



Это классический пример - "Решето Ератосфена"


--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
albertn
Дата 24.8.2006, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(ergocom @ 24.8.2006,  07:56)
Народ вы правы мне нужны простые числа вот как мона очень легко их найти!  smile 
Код

#include <iostream> 
using namespace std; 

int main() {  
_wsetlocale(LC_ALL, L"Russian");
  int i, j; 
  bool prime; 

  for(i=1; i < 100; i++) { 
    prime = true;  

    
    for(j=2; j <= i/2; j++) 
     
      if((i%j) == 0) prime = false; 

    if(prime) 
      cout << i << "  Простые числа с 1-100\n"; 
  } 

  return 0; 
}


Я только одного не понял, почему i/2 а не корень?
PM WWW ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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