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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 34, средняя оценка - 4.82
nepster
 Аватар для nepster
60 / 60 / 1
Регистрация: 19.09.2009
Сообщений: 844
#1

Вывести все простые числа от 0 до 100 (цикл while) - C++

08.10.2009, 21:37. Просмотров 4132. Ответов 26

Подскажите пожалуйста как при помощи цикла while и проверки вывести на экран все простые числа от 0 до 100. (1,3,5,7,11,13,17....)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2009, 21:37     Вывести все простые числа от 0 до 100 (цикл while)
Посмотрите здесь:

C++ Вывести все простые числа до n
C++ Вывести все простые делители числа
C++ Вывести на экран все простые числа
Вывести все простые числа от M до N включительно C++
C++ Цикл: Вывести все простые числа от M до N включительно
Найти все простые числа из интервала от 100 до 1000, используя логическую функцию C++
Цикл: Найти и напечатать все простые числа, меньше 100 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
minitup
1 / 1 / 0
Регистрация: 27.09.2009
Сообщений: 8
08.10.2009, 21:46     Вывести все простые числа от 0 до 100 (цикл while) #2
=) Ну, как вариант можете проверять каждое число от 1 до 100 на простоту, а потом суммировать простые(не быстро, но интересно). Можно использовать алгоритмы генерации(типа решета Эратосфена и т.п.) простых чисел для интервала 1-100, и тоже суммировать.
nepster
 Аватар для nepster
60 / 60 / 1
Регистрация: 19.09.2009
Сообщений: 844
08.10.2009, 21:52  [ТС]     Вывести все простые числа от 0 до 100 (цикл while) #3
не вариант! чисел может быть 65525 например! от 0 до 100 это так как бы образец. Мне сам алгоритм нужен
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
08.10.2009, 22:23     Вывести все простые числа от 0 до 100 (цикл while) #4
простые числа от 0 до 100. (1,3,5,7,11,13,17....)
1 - не является простым или составным числом !
И в списке нет простого числа 2 !

Мне сам алгоритм нужен
Достаточно поискать в форуме
http://www.cyberforum.ru/cpp-beginne...tml#post243387
minitup
1 / 1 / 0
Регистрация: 27.09.2009
Сообщений: 8
08.10.2009, 22:31     Вывести все простые числа от 0 до 100 (цикл while) #5
Так-то наоборот вариант, сразу и оцените падение скорости грубого алгоритма при увеличении сложности.

Вот на 1С кусок с алгоритмом(не решето):

МассивПростыхЧисел = Новый Массив;
СуммаПростых = 0;
Для Счетчик = 1 По ВерхняяГраница Цикл
Простое = Истина;

Если Счетчик = 1 Тогда
Продолжить;
КонецЕсли;

МаксЦелДелитель = Цел(Pow(Счетчик, 0.5));
Если МаксЦелДелитель = 1 Тогда //числа 2 и 3
Иначе
Для СчетчикПростых = 1 По МассивПростыхЧисел.Количество() Цикл
ТекЧислоМассива = МассивПростыхЧисел.Получить(СчетчикПростых - 1);
Если ТекЧислоМассива > МаксЦелДелитель Тогда
Прервать;
КонецЕсли;

Если Счетчик/ТекЧислоМассива = Цел(Счетчик/ТекЧислоМассива) Тогда
Простое = Ложь;
Прервать;
КонецЕсли;

КонецЦикла;

КонецЕсли;

Если Простое Тогда
МассивПростыхЧисел.Добавить(Счетчик);
СуммаПростых = СуммаПростых + Счетчик;


Для Си++ тут вроде есть http://forum.codenet.ru/showthread.p...F7%E8%F1%EB%E0
nepster
 Аватар для nepster
60 / 60 / 1
Регистрация: 19.09.2009
Сообщений: 844
08.10.2009, 23:00  [ТС]     Вывести все простые числа от 0 до 100 (цикл while) #6
odip

Та то все не то! тм воды больше чем нужно!


minitup

консольный С нужен а не С ++...

А простые числа, это числа которые делятся только на 1 и на самого себя...
я даже вообще не знаю как это реализовать! По аданию нужно использовать только проверку и while цикл
}{ottab
 Аватар для }{ottab
14 / 13 / 3
Регистрация: 04.03.2009
Сообщений: 75
08.10.2009, 23:09     Вывести все простые числа от 0 до 100 (цикл while) #7
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
 
void main()
{
    int i,j;
    for (i=3; i<100; i++)
    {
        bool flag=true;
        j=2;
        while (j<=sqrt((double)i))
        {
            if (i%j==0) {flag=false; break;}
            j++;
        }
        if (flag==true) printf("%d\n",i);
    }
    getchar();
}
nepster
 Аватар для nepster
60 / 60 / 1
Регистрация: 19.09.2009
Сообщений: 844
08.10.2009, 23:54  [ТС]     Вывести все простые числа от 0 до 100 (цикл while) #8
Ошибка 2 error C3861: sqrt: идентификатор не найден c:\documents and settings\nepster\мои документы\visual studio 2008\projects\657657567657\657657567657\657657567657.cpp 20 657657567657


Ошибка 3 fatal error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции c:\documents and settings\nepster\мои документы\visual studio 2008\projects\657657567657\657657567657\657657567657.cpp 20 657657567657

две ошибки
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
09.10.2009, 07:29     Вывести все простые числа от 0 до 100 (цикл while) #9
Цитата Сообщение от nepster Посмотреть сообщение
две ошибки
нет там ошибок у }{ottab. возьмите/скопируйте весь код. вероятно вы библиотеку math не подключили

единтсвенно, в начале кода к последующему списку можно присовокупить числа 1 и 2 для полноты картины
mamedovvms
2915 / 836 / 93
Регистрация: 30.04.2009
Сообщений: 2,614
09.10.2009, 07:38     Вывести все простые числа от 0 до 100 (цикл while) #10
Цитата Сообщение от }{ottab Посмотреть сообщение
for (i=3; i<100; i++)
здесь можно написать по другому
C#
1
for (i=3;i<100;i+=2)
так как кроме двойки все остальные должны быть нечетные, и по этому не стоит проверять четные
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
09.10.2009, 11:25     Вывести все простые числа от 0 до 100 (цикл while) #11
Та то все не то! тм воды больше чем нужно!
Вычерпай !
В конце концов кто должен учиться писать программы ?
mamedovvms
2915 / 836 / 93
Регистрация: 30.04.2009
Сообщений: 2,614
09.10.2009, 12:14     Вывести все простые числа от 0 до 100 (цикл while) #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
#include <iostream>
#include <math.h>
using namespace std;
int main()
{  int a[100]={0};
   int i=0, k=0;
   bool l;
   a[0]=2;   
  for (i=3;i<100;i+=2)
  {    int j=0;     
       l=false;
      while (j<=k && l==false && a[j]<sqrt(i))
      {
       if ((i%a[j])==0){l=true;}
       j++;
      }
       if (l==false){k++;a[k]=i;}       
  }  
   for (i=0;i<=k;i++)
    cout<<a[i]<<"\n";
   system("pause");
 
 
}
nepster
 Аватар для nepster
60 / 60 / 1
Регистрация: 19.09.2009
Сообщений: 844
09.10.2009, 16:16  [ТС]     Вывести все простые числа от 0 до 100 (цикл while) #13
спасибо конечно, но фор нельзя использовать (в задании). + я даже не знаю что за библиотека #include <math.h>
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
09.10.2009, 16:23     Вывести все простые числа от 0 до 100 (цикл while) #14
Цитата Сообщение от nepster Посмотреть сообщение
спасибо конечно, но фор нельзя использовать (в задании). + я даже не знаю что за библиотека #include <math.h>
math - это для вычисления математики разной, здесь используется для вычисления корня (sqrt)

for - замени на while. получиться как-то так
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>
#include <cmath>
 
using namespace std;
int main()
{  
    int a[100]={0};
    int i=0, k=0;
    bool l;
    a[0]=2;
    
 
    i=3;
    while(i<100)
    {    
        int j=0;
        l=false;
        while (j<=k && l==false && a[j]<(int)sqrt((double)i))
        {
            if ((i%a[j])==0){l=true;}
            j++;
        }
        if (l==false){k++;a[k]=i;} 
        i+=2;
    } 
 
    i=0;
    while (i<=k)
    { cout<<a[i]<<"\n"; ++i;}
    system("pause");
 
 
}
nepster
 Аватар для nepster
60 / 60 / 1
Регистрация: 19.09.2009
Сообщений: 844
09.10.2009, 18:57  [ТС]     Вывести все простые числа от 0 до 100 (цикл while) #15
о отлично оно работает, только последнее но осталось! Выводит числа 9, 15, 25 и др. А это не простые числа, а как их убратЬ?
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
09.10.2009, 19:29     Вывести все простые числа от 0 до 100 (цикл while) #16
н-да. видимо автор несколько ошибся, замени
C++
1
while (j<=k && l==false && a[j]<(int)sqrt((double)i))
на
C++
1
while (j<=k && l==false && a[j]<=(int)sqrt((double)i)))
nepster
 Аватар для nepster
60 / 60 / 1
Регистрация: 19.09.2009
Сообщений: 844
09.10.2009, 19:44  [ТС]     Вывести все простые числа от 0 до 100 (цикл while) #17
ой ой ой спасибо большое все заработало =)

Добавлено через 6 минут
только пару вопросов еще. Я начал вникать в код, вот кое что не понял:

C
1
2
3
int a[100]={0};
int i=0, k=0;
a[0]=2;
Что это за обозначение переменных?

что такое
C
1
bool l;

C
1
while (j<=k && l==false && a[j]<=(int)sqrt((double)i))
что значит l==false - что переменная лож? Оо

и вот это не очень понял a[j]<=(int)sqrt((double)i))


C
1
cout<<a[i]<<"\n"; ++i;
и при выводе зачем ++i
Sich_Taras
14 / 14 / 1
Регистрация: 08.10.2009
Сообщений: 114
09.10.2009, 19:59     Вывести все простые числа от 0 до 100 (цикл while) #18
Для этого можно использовать решето Эратосфена.

Добавлено через 10 минут
Вот реализация оптимизированного решета Эратосфена на С++ MS Visual 9.0 :

Добавлено через 20 секунд
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
//Решето Эратосфена реализация
#include<iostream>
using namespace std;
 
int main()
{
    int nSize;
    cout << "Limit = ";
    cin >> nSize;
    nSize++;
    bool* bArray = new bool [nSize];
 
    memset(bArray, 1, nSize);
 
    for(int i = 2; i < nSize; ++i)
        if(bArray[i])
        for(int j = i*i; j < nSize; j += i)
            bArray[j] = false;
    cout << "All primes numbers from 0 to " << (nSize - 1) << ":" << endl;
    for(int i = 2; i < nSize; ++i)
        if(bArray[i])
        printf("%d ", i);
 
    cout << endl;
 
    return 0;
}
x-positive
1 / 1 / 0
Регистрация: 09.02.2011
Сообщений: 21
24.02.2011, 01:10     Вывести все простые числа от 0 до 100 (цикл while) #19
Как вариант введу свой код, может кому-то пригодится:
(код готовой программы, которая выводит все простые числа, меньше чем число N)

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 <stdio.h>
#include <conio.h>
 
main()
{
float N;
int Z=1, I, X=3;
 
printf("N = ");
scanf("%f",&N);
printf("P-s: 1,2");
 
while (X<N)
{
   for (I = 2; I < X; I++) if (!(X % I)) Z = 0;
 
   if (Z) printf(",%i",X);
   Z = 1;
 
   X++;
}
 
getch();
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2011, 12:29     Вывести все простые числа от 0 до 100 (цикл while)
Еще ссылки по теме:

C++ Вывести все простые числа из интервала
C++ Вывести простые числа от 1 до 100
Вывести все простые числа в диапазоне от a до b C++
Вывести простые числа в пределах до 100 C++
C++ Найти все простые числа в диапазоне от 1 до 100

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

Или воспользуйтесь поиском по форуму:
Nesnakomez
0 / 0 / 0
Регистрация: 11.07.2009
Сообщений: 21
13.08.2011, 12:29     Вывести все простые числа от 0 до 100 (цикл while) #20
вопрос снят
Yandex
Объявления
13.08.2011, 12:29     Вывести все простые числа от 0 до 100 (цикл while)
Ответ Создать тему
Опции темы

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