Простые числа...нужна помощь

Модератор: Модераторы разделов

Аватара пользователя
hp-ipaq4150
Сообщения: 16
ОС: Ubuntu 7.04

Простые числа...нужна помощь

Сообщение hp-ipaq4150 »

Хотел сделать программу, которая бы выводила все простые числа из отрезка [a;b].

Вот собсна код программы:

#include <iostream>

int main ()
{
int a, b, i, j, p;
cin>>a>>b;
for (i=a; i<=b;i++);
{
for (j=2; j<i/2+1; j++)
if (i%j==0) p=1;
if (p==0) cout<<i<<" "; else p=0;
}
return 0;
}

Программа работает, но вот результат работы странный
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
elf74
Сообщения: 482
Статус: Линуксоид-Самовар :)
ОС: Mandriva Power Pack 2008.0 LCE

Re: Простые числа...нужна помощь

Сообщение elf74 »

А что именно Вам не нравится?
То что не в столбик вывод идет?
Так для этого нужно в строчку
if (p==0) cout<<i<<" "; else p=0;
endl либо "\n" включить....
А, пардон... Вы там в начале вводите a=1, b=3? :)
Это как раз пример семантической ошибки :) , когда вроде бы должно работать, а не хочет :)

Попробуйте вот такой код

Код: Выделить всё

#include <iostream>
using namespace std;

int main()
{
  int number = 0;
  bool flag = false;

  cout << "Введите число ";
  cin >> number;

  for(int i = 2; i < number; i++)
  {
    for(int j = 2; j < i; j++)
    {
      if(i % j) continue;
      else
      {
        flag = true;
        break;
      }
    }
    if(!flag) cout << i << " ";
    flag = false;
  }

  return 0;
}

Цитата из книги "С++, мастер-класс в задачах и примерах" (так, на всякий случай, книга хорошая...)
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Простые числа...нужна помощь

Сообщение Uncle_Theodore »

Гыгыгы... Точку с запятой после
for (i=a; i<=b;i++); уберите. :)
Спасибо сказали:
Аватара пользователя
hp-ipaq4150
Сообщения: 16
ОС: Ubuntu 7.04

Re: Простые числа...нужна помощь

Сообщение hp-ipaq4150 »

Uncle_Theodore писал(а):
16.12.2007 18:57
Гыгыгы... Точку с запятой после
for (i=a; i<=b;i++); уберите. :)



Сорри, это опечатался когда постил, в самой проге нет опечатки.
Спасибо сказали:
Аватара пользователя
hp-ipaq4150
Сообщения: 16
ОС: Ubuntu 7.04

Re: Простые числа...нужна помощь

Сообщение hp-ipaq4150 »

Просто не понимаю, вот смысл всего: я ввожу числа начала и конца отрезка [a;b], далее мне программа должна вывести на экран простые числа. А получается бесконечный набор чисел. Такого быть не может.
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Простые числа...нужна помощь

Сообщение Uncle_Theodore »

hp-ipaq4150 писал(а):
16.12.2007 20:30
Uncle_Theodore писал(а):
16.12.2007 18:57
Гыгыгы... Точку с запятой после
for (i=a; i<=b;i++); уберите. :)



Сорри, это опечатался когда постил, в самой проге нет опечатки.

А что тогда не так?

Код: Выделить всё

#include <iostream>
using namespace std;

int main ()
{
  int a, b, i, j, p;
  cin>>a>>b;
  for (i=a; i<=b;i++)
    {
      for (j=2; j<i/2+1; j++)
    if (i%j==0) p=1;
      if (p==0) cout<<i<<" "; else p=0;
    }
  return 0;
}

Код: Выделить всё

ted@toshiba~$ g++ prime.cc -o prime
ted@toshiba~$ prime
1 25
2 3 5 7 11 13 17 19 23 ted@toshiba~$ prime
1 3
2 3 ted@toshiba~$
Спасибо сказали:
Аватара пользователя
Clear_Mind
Сообщения: 241
Статус: Изредко заглядывающий
ОС: openSuSE 11.1

Re: Простые числа...нужна помощь

Сообщение Clear_Mind »

А вы не пробовали почитать какую-нибудь книжку по алгоритмам? Я бы посоветовал вот эту: Кнут Д.Э. Искусство программирования
т. 2 Получисленные алгоритмы. Там подробненько написано о простых числах и методах их нахождения.

Еще совет. Пользуйтесь http://www.google.com/codesearch
к примеру на запрос prime lang:c++ Гугл найдет вам кучу строк реального кода.
Bombers launch with no recall + Minutes warning of the missile fall
Take a look at your last sky + Guessing you won't have the time to cry
--- Iron Maiden (Brouther Than A Thousand Suns, 2006)
Спасибо сказали:
elf74
Сообщения: 482
Статус: Линуксоид-Самовар :)
ОС: Mandriva Power Pack 2008.0 LCE

Re: Простые числа...нужна помощь

Сообщение elf74 »

Clear_Mind писал(а):
16.12.2007 20:59
А вы не пробовали почитать какую-нибудь книжку по алгоритмам? Я бы посоветовал вот эту: Кнут Д.Э. Искусство программирования
т. 2 Получисленные алгоритмы. Там подробненько написано о простых числах и методах их нахождения.

Ребята, товарищ же предупредил, что всего полгода изучает как сам язык, так и основы программирования... А вы Кнутом его... :unsure: все с чего-то начинают... и не надо думать что ВСЕ такие же сообразительные...
hp-ipaq4150 выходите в личку, там решим ваши (в общем-то простые вопросы)... А то тут опять всЁ загадят своими "советами"...
Спасибо сказали:
Аватара пользователя
hp-ipaq4150
Сообщения: 16
ОС: Ubuntu 7.04

Re: Простые числа...нужна помощь

Сообщение hp-ipaq4150 »

Код: Выделить всё

ted@toshiba~$ g++ prime.cc -o prime
ted@toshiba~$ prime
1 25
2 3 5 7 11 13 17 19 23 ted@toshiba~$ prime
1 3
2 3 ted@toshiba~$



В том то и дело что я ввожу:
fifa@fifa-laptop:~/moi_progi/15$ g++ ab.cpp -o ab
fifa@fifa-laptop:~/moi_progi/15$ ./ab
.. а далее уже идет набор чисел (выше постил скрин)

В чем может быть причина? Сам ли g++ или еще что?
Спасибо сказали:
Аватара пользователя
Atragor
Сообщения: 681
Статус: ...

Re: Простые числа...нужна помощь

Сообщение Atragor »

То есть выводить начинает сразу, как только после ./ab Enter нажимаете?
If you were MEANT to understand it, we wouldn't have called it 'code' © bash.org
Спасибо сказали:
Аватара пользователя
hp-ipaq4150
Сообщения: 16
ОС: Ubuntu 7.04

Re: Простые числа...нужна помощь

Сообщение hp-ipaq4150 »

Atragor писал(а):
16.12.2007 21:31
То есть выводить начинает сразу, как только после ./ab Enter нажимаете?


Да, всегда Enter нажимал.
Спасибо сказали:
Аватара пользователя
Atragor
Сообщения: 681
Статус: ...

Re: Простые числа...нужна помощь

Сообщение Atragor »

Это глюк какой-то... Прога зацикливается разве что, если ей на вход не числа подать. Может там с консоли что-нибудь лишнее цепляется? Но вывод-то правильный... просто бесконечный. Странно.
If you were MEANT to understand it, we wouldn't have called it 'code' © bash.org
Спасибо сказали:
s0urce
Сообщения: 321
ОС: Arch Linux + WinXP

Re: Простые числа...нужна помощь

Сообщение s0urce »

hp-ipaq4150, может ты запускаешь не ту программу, которую компилируешь?

P.S. Бог с ним с Кнутом, ну хоть бы решето Эратосфена использовали... А почему все норовят использовать i/2 в качестве глубины проверки для меня вообще загадка, ведь любому школьнику ясно, что если число нацело не делится на целую часть кв.корня из себя, то на большие числа оно и подавно нацело делиться не будет...
Спасибо сказали:
Аватара пользователя
hp-ipaq4150
Сообщения: 16
ОС: Ubuntu 7.04

Re: Простые числа...нужна помощь

Сообщение hp-ipaq4150 »

Спасибо всем за помощь, проблема решена!
Спасибо сказали:
s0urce
Сообщения: 321
ОС: Arch Linux + WinXP

Re: Простые числа...нужна помощь

Сообщение s0urce »

hp-ipaq4150 писал(а):
17.12.2007 15:41
Спасибо всем за помощь, проблема решена!
Скажи хоть ради интереса в чём она заключалась?
Спасибо сказали: