Простые числа...нужна помощь
Модератор: Модераторы разделов
-
hp-ipaq4150
- Сообщения: 16
- ОС: Ubuntu 7.04
Простые числа...нужна помощь
Хотел сделать программу, которая бы выводила все простые числа из отрезка [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;
}
Программа работает, но вот результат работы странный
Вот собсна код программы:
#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: Простые числа...нужна помощь
А что именно Вам не нравится?
То что не в столбик вывод идет?
Так для этого нужно в строчку
if (p==0) cout<<i<<" "; else p=0;
endl либо "\n" включить....
А, пардон... Вы там в начале вводите a=1, b=3?
Это как раз пример семантической ошибки
, когда вроде бы должно работать, а не хочет 
Попробуйте вот такой код
Цитата из книги "С++, мастер-класс в задачах и примерах" (так, на всякий случай, книга хорошая...)
То что не в столбик вывод идет?
Так для этого нужно в строчку
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: Простые числа...нужна помощь
Гыгыгы... Точку с запятой после
for (i=a; i<=b;i++); уберите.
for (i=a; i<=b;i++); уберите.
-
hp-ipaq4150
- Сообщения: 16
- ОС: Ubuntu 7.04
Re: Простые числа...нужна помощь
Uncle_Theodore писал(а): ↑16.12.2007 18:57Гыгыгы... Точку с запятой после
for (i=a; i<=b;i++); уберите.
Сорри, это опечатался когда постил, в самой проге нет опечатки.
-
hp-ipaq4150
- Сообщения: 16
- ОС: Ubuntu 7.04
Re: Простые числа...нужна помощь
Просто не понимаю, вот смысл всего: я ввожу числа начала и конца отрезка [a;b], далее мне программа должна вывести на экран простые числа. А получается бесконечный набор чисел. Такого быть не может.
-
Uncle_Theodore
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Простые числа...нужна помощь
hp-ipaq4150 писал(а): ↑16.12.2007 20:30Uncle_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: Простые числа...нужна помощь
А вы не пробовали почитать какую-нибудь книжку по алгоритмам? Я бы посоветовал вот эту: Кнут Д.Э. Искусство программирования
т. 2 Получисленные алгоритмы. Там подробненько написано о простых числах и методах их нахождения.
Еще совет. Пользуйтесь http://www.google.com/codesearch
к примеру на запрос prime lang:c++ Гугл найдет вам кучу строк реального кода.
т. 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)
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: Простые числа...нужна помощь
Clear_Mind писал(а): ↑16.12.2007 20:59А вы не пробовали почитать какую-нибудь книжку по алгоритмам? Я бы посоветовал вот эту: Кнут Д.Э. Искусство программирования
т. 2 Получисленные алгоритмы. Там подробненько написано о простых числах и методах их нахождения.
Ребята, товарищ же предупредил, что всего полгода изучает как сам язык, так и основы программирования... А вы Кнутом его...
hp-ipaq4150 выходите в личку, там решим ваши (в общем-то простые вопросы)... А то тут опять всЁ загадят своими "советами"...
-
hp-ipaq4150
- Сообщения: 16
- ОС: Ubuntu 7.04
Re: Простые числа...нужна помощь
Код: Выделить всё
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: Простые числа...нужна помощь
То есть выводить начинает сразу, как только после ./ab Enter нажимаете?
If you were MEANT to understand it, we wouldn't have called it 'code' © bash.org
-
hp-ipaq4150
- Сообщения: 16
- ОС: Ubuntu 7.04
-
Atragor
- Сообщения: 681
- Статус: ...
Re: Простые числа...нужна помощь
Это глюк какой-то... Прога зацикливается разве что, если ей на вход не числа подать. Может там с консоли что-нибудь лишнее цепляется? Но вывод-то правильный... просто бесконечный. Странно.
If you were MEANT to understand it, we wouldn't have called it 'code' © bash.org
-
s0urce
- Сообщения: 321
- ОС: Arch Linux + WinXP
Re: Простые числа...нужна помощь
hp-ipaq4150, может ты запускаешь не ту программу, которую компилируешь?
P.S. Бог с ним с Кнутом, ну хоть бы решето Эратосфена использовали... А почему все норовят использовать i/2 в качестве глубины проверки для меня вообще загадка, ведь любому школьнику ясно, что если число нацело не делится на целую часть кв.корня из себя, то на большие числа оно и подавно нацело делиться не будет...
P.S. Бог с ним с Кнутом, ну хоть бы решето Эратосфена использовали... А почему все норовят использовать i/2 в качестве глубины проверки для меня вообще загадка, ведь любому школьнику ясно, что если число нацело не делится на целую часть кв.корня из себя, то на большие числа оно и подавно нацело делиться не будет...
-
hp-ipaq4150
- Сообщения: 16
- ОС: Ubuntu 7.04
Re: Простые числа...нужна помощь
Спасибо всем за помощь, проблема решена!
-
s0urce
- Сообщения: 321
- ОС: Arch Linux + WinXP
Re: Простые числа...нужна помощь
Скажи хоть ради интереса в чём она заключалась?