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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
cybberdemon
0 / 0 / 0
Регистрация: 29.04.2013
Сообщений: 25
#1

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

26.05.2013, 18:20. Просмотров 565. Ответов 11
Метки нет (Все метки)

задали задачу написать ряд простых чисел,у самого мозгов не хватило толком ее написать,написал с миру по нитке,без ввода с клавиатуры с заданным диапазоном от 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");
}
а вот то что у меня выходит, скрин
0
Миниатюры
Вывод простых чисел  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 18:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод простых чисел (C++):

Вывод простых чисел от m до n - C++
Здравствуйте! Возникла проблемка с задачкой. Требуется вывести все простые числа от m до n, при условии, что 2&lt;=m&lt;=n&lt;=1000000. Если нет...

Вывод простых чисел - C++
Всем привет, люди помогите написать программу очень нужно и если можно то с комментариями. Написать программу, которая выводит простые...

Вывод простых чисел из массива - C++
здравствуйте. я в интернете нашел программу которая выбирает простые числа из массива, но до сих пор не могу понять что такое &quot;...

Вывод всех простых чисел. - C++
Задали задачку. Вывести все простые числа от 1 до n Примерно сделал на паскале. До 100 все работает а дальше он не может ворочать...

Вывод простых чисел на заданном отрезке - C++
Поделитесь мыслью, как это сделать. В теории о том, каким образом искать простое число ничего не говорится а также подскажите каким образом...

Где ошибка, вывод простых чисел - C++
for ( int i = 2; i * i &lt;= n; i++ ) { if ( n % i == 0 ) { return 0; } } ...

11
cybberdemon
0 / 0 / 0
Регистрация: 29.04.2013
Сообщений: 25
26.05.2013, 18:20  [ТС] #2
беда какая то,второй день воюю
0
zss
Модератор
Эксперт С++
6400 / 5966 / 1943
Регистрация: 18.12.2011
Сообщений: 15,357
Завершенные тесты: 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;
}
0
cybberdemon
0 / 0 / 0
Регистрация: 29.04.2013
Сообщений: 25
26.05.2013, 18:29  [ТС] #4
а можно найти в моем коде неточность,а то в вашем коде мне мало что понятно
0
genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348
26.05.2013, 18:34 #5
cybberdemon, не могли бы Вы устно объяснить свой алгоритм? А то я в первый раз вижу подобное..
0
zss
Модератор
Эксперт С++
6400 / 5966 / 1943
Регистрация: 18.12.2011
Сообщений: 15,357
Завершенные тесты: 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;
}
1
genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348
26.05.2013, 18:37 #7
Цитата Сообщение от cybberdemon Посмотреть сообщение
if(n>1);
что это такое? если условие выполняется, то ничего не произойдёт, т.к. стоит ;
0
cybberdemon
0 / 0 / 0
Регистрация: 29.04.2013
Сообщений: 25
26.05.2013, 18:43  [ТС] #8
это означает,что если условие истинно то он пойдет проверять условия самого for ,а если нет то выведет число
0
zss
Модератор
Эксперт С++
6400 / 5966 / 1943
Регистрация: 18.12.2011
Сообщений: 15,357
Завершенные тесты: 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";
}
0
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 секунд
у него работает,у меня чего то нет,мистика какая то
0
zss
Модератор
Эксперт С++
6400 / 5966 / 1943
Регистрация: 18.12.2011
Сообщений: 15,357
Завершенные тесты: 1
26.05.2013, 18:55 #11
У Вас еще одна незаметная ошибка была
внутренний цикл надо начинать с двойки
for(int i=2;i<=a/2;i++)
0
Genn55
368 / 215 / 41
Регистрация: 26.12.2012
Сообщений: 708
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;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2013, 23:44
Привет! Вот еще темы с ответами:

Вывод всех простых чисел в диапазоне от 1 до 100 - C++
Написать функцию, определяющую, является ли введенное целое чис- ло простым или нет. (Число простое, если оно делится только на 1 и на...

Вычислить количество простых чисел среди положительных чисел массива - C++
Дан массив целых положительных и отрицательных чисел в количестве меньше или равно 64 . А требуется , Вычислить количество простых чисел...

Вводится последовательность целых чисел. Определить среднее арифметическое простых чисел последовательности - C++
Использовать функции в программе Задание: Вводится последовательность целых чисел. Определить среднее арифметическое простых чисел...

Дан массив целых чисел. Верно ли, что он состоит только из простых чисел? - C++
Дан массив целых чисел. Верно ли, что он состоит только из простых чисел?


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

Или воспользуйтесь поиском по форуму:
12
Yandex
Объявления
26.05.2013, 23:44
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru