Форум программистов, компьютерный форум CyberForum.ru

Вывод простых чисел - C++

Восстановить пароль Регистрация
 
cybberdemon
0 / 0 / 0
Регистрация: 29.04.2013
Сообщений: 25
26.05.2013, 18:20     Вывод простых чисел #1
задали задачу написать ряд простых чисел,у самого мозгов не хватило толком ее написать,написал с миру по нитке,без ввода с клавиатуры с заданным диапазоном от 3 до 1000 и вот какая пурга выходит,причем смотрю на программы которую написал одногруппник и тихо офигеваю ну в принципе тоже самое у него работает у меня какая то хрень выходит
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<iostream>
using namespace std;
 
void main()
{
    setlocale(LC_ALL,"russian");
int b=1000,n=0;
for(int a=3;a<=b;a++)
{
    n=0;
    for(int i=1;i<a;i++)
    {
        {
            if(a%i==0)n++;
        }
        if(n>1);
        else cout<<a<<"\t";
 
    }
    cout<<"\n";
}
 
    
    system("pause");
}
а вот то что у меня выходит, скрин
Миниатюры
Вывод простых чисел  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cybberdemon
0 / 0 / 0
Регистрация: 29.04.2013
Сообщений: 25
26.05.2013, 18:20  [ТС]     Вывод простых чисел #2
беда какая то,второй день воюю
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,195
Завершенные тесты: 1
26.05.2013, 18:26     Вывод простых чисел #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bool prostoe(int n)
{
   for(int i=2;i<=n/2;i++)
       if(n%i==0)
             return false;
   return true;
}
int main()
{
    for(int n=3;n<=1000;n++)
    {
      if(prostoe(n))
          cout<<n<<" ";
    }
    return 1;
}
cybberdemon
0 / 0 / 0
Регистрация: 29.04.2013
Сообщений: 25
26.05.2013, 18:29  [ТС]     Вывод простых чисел #4
а можно найти в моем коде неточность,а то в вашем коде мне мало что понятно
genock94
 Аватар для genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348
26.05.2013, 18:34     Вывод простых чисел #5
cybberdemon, не могли бы Вы устно объяснить свой алгоритм? А то я в первый раз вижу подобное..
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,195
Завершенные тесты: 1
26.05.2013, 18:35     Вывод простых чисел #6
Цитата Сообщение от cybberdemon Посмотреть сообщение
if(n>1);
означает, если n>1, то "пустой оператор".
; ставить нельзя.
А мой код более понятен:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bool prostoe(int n)// функция определяет простое ли число n
{
   for(int i=2;i<=n/2;i++)
       if(n%i==0) // Если делится на i, то не простое
             return false;
   return true;   // не делится ни на одно - простое.
}
int main()
{
    for(int n=3;n<=1000;n++)
    {
      if(prostoe(n)) // если простое, то выводим
          cout<<n<<" "; 
    }
    return 1;
}
genock94
 Аватар для genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348
26.05.2013, 18:37     Вывод простых чисел #7
Цитата Сообщение от cybberdemon Посмотреть сообщение
if(n>1);
что это такое? если условие выполняется, то ничего не произойдёт, т.к. стоит ;
cybberdemon
0 / 0 / 0
Регистрация: 29.04.2013
Сообщений: 25
26.05.2013, 18:43  [ТС]     Вывод простых чисел #8
это означает,что если условие истинно то он пойдет проверять условия самого for ,а если нет то выведет число
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,195
Завершенные тесты: 1
26.05.2013, 18:44     Вывод простых чисел #9
если хотите оставить без функции,
то поправьте циклы
C++
1
2
3
4
5
6
7
8
9
10
11
12
for(int a=3;a<=b;a++)
{
    n=0;
    for(int i=1;i<=a/2;i++)
    {
         if(a%i==0)
        {
            n=1;break;
        }
    }
     if(n==0)cout<<a<<"\t";
}
cybberdemon
0 / 0 / 0
Регистрация: 29.04.2013
Сообщений: 25
26.05.2013, 18:54  [ТС]     Вывод простых чисел #10
теперь вообще ничего не выводит

Добавлено через 1 минуту
вот такая же задача моего одногруппника
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
using namespace std;
 
void main()
{
    char c;
     {setlocale(LC_ALL,"Rus");  // функция написания русского текста
pp: cout<<"\n Программа для вычисления простых чисел  в диапазоне от 2 до 1000 ";
  cout<<"\n\n\t Введите первое число диапазона ";
   int a=0;
    cin>>a;
    if (a<=1 || a>1000)  goto p;
 
 cout<<"\n\t Введите последнее число диапазона ";
   int b=0;
    cin>>b;
   if (b<=1 || b>1000 || b<a)  goto p;
for(  ;a<=b;a++)
{
            int sum=0;
     for(int i=1;i<a;i++)
         {
     if(a%i==0)  sum++;
         }
     if(sum>1);
     else   cout<<" "<<a<<"\t";
}
  goto ppp;
p:cout<<"\n\n\t\t от 2 до 1000 повторите правильно  ввод \n"; goto pp;
  ppp: cout<<" \n конец программы благодарю за  тест";
   cin>>c;   
     }
}
Добавлено через 46 секунд
у него выводит ряд простых чисел,правда он задавал еще диапазон вводимый пользователем

Добавлено через 26 секунд
у него работает,у меня чего то нет,мистика какая то
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,195
Завершенные тесты: 1
26.05.2013, 18:55     Вывод простых чисел #11
У Вас еще одна незаметная ошибка была
внутренний цикл надо начинать с двойки
for(int i=2;i<=a/2;i++)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2013, 23:44     Вывод простых чисел
Еще ссылки по теме:

Вывод простых чисел C++
C++ Вывод простых чисел из массива
Где ошибка, вывод простых чисел C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
26.05.2013, 23:44     Вывод простых чисел #12
Работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <math.h>
 
using namespace std;
 
//прототип функции
inline bool simple(int);
 
int main()
{
int b=1000, a = 3;
for(int i = a; i <= b; i++)//задается интервал
if(simple(i))
cout  << i<<"\t";
 
return 0;
}
 
inline bool simple(int num)
{
if(num < 2)
return false;
else
for(int i = 2; i <= sqrt(num); i++)// sqrt(num) сокращается число проверок
if(num % i == 0)
return false;
 
return true;
}
Yandex
Объявления
26.05.2013, 23:44     Вывод простых чисел
Ответ Создать тему
Опции темы

Текущее время: 05:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru