Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/125: Рейтинг темы: голосов - 125, средняя оценка - 4.91
 Аватар для nepster
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844

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

08.10.2009, 21:37. Показов 24619. Ответов 26

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста как при помощи цикла while и проверки вывести на экран все простые числа от 0 до 100. (1,3,5,7,11,13,17....)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.10.2009, 21:37
Ответы с готовыми решениями:

Цикл: Найти и напечатать все простые числа, меньше 100
Надо написать программу, которая находит и печатает все простые числа меньше 100, дайте, пожалуйста, пример, от которого можно...

Вывести все простые числа от 0 до 100
Вывести все простые числа от 0 до 100

Вывести все простые числа от 2 до 100
Нужно вывести все простые числа от 2 до 100 for i in range (2, 100): i = False for j in range (2, i): if i == j: ...

26
1 / 1 / 0
Регистрация: 27.09.2009
Сообщений: 8
08.10.2009, 21:46
=) Ну, как вариант можете проверять каждое число от 1 до 100 на простоту, а потом суммировать простые(не быстро, но интересно). Можно использовать алгоритмы генерации(типа решета Эратосфена и т.п.) простых чисел для интервала 1-100, и тоже суммировать.
0
 Аватар для nepster
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
08.10.2009, 21:52  [ТС]
не вариант! чисел может быть 65525 например! от 0 до 100 это так как бы образец. Мне сам алгоритм нужен
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
08.10.2009, 22:23
простые числа от 0 до 100. (1,3,5,7,11,13,17....)
1 - не является простым или составным числом !
И в списке нет простого числа 2 !

Мне сам алгоритм нужен
Достаточно поискать в форуме
https://www.cyberforum.ru/cpp-... post243387
0
1 / 1 / 0
Регистрация: 27.09.2009
Сообщений: 8
08.10.2009, 22:31
Так-то наоборот вариант, сразу и оцените падение скорости грубого алгоритма при увеличении сложности.

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

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

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

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

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

КонецЦикла;

КонецЕсли;

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


Для Си++ тут вроде есть http://forum.codenet.ru/showth... 8%F1%EB%E0
0
 Аватар для nepster
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
08.10.2009, 23:00  [ТС]
odip

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


minitup

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

А простые числа, это числа которые делятся только на 1 и на самого себя...
я даже вообще не знаю как это реализовать! По аданию нужно использовать только проверку и while цикл
0
 Аватар для }{ottab
14 / 13 / 5
Регистрация: 04.03.2009
Сообщений: 75
08.10.2009, 23:09
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();
}
0
 Аватар для nepster
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
08.10.2009, 23:54  [ТС]
Ошибка 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

две ошибки
0
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
09.10.2009, 07:29
Цитата Сообщение от nepster Посмотреть сообщение
две ошибки
нет там ошибок у }{ottab. возьмите/скопируйте весь код. вероятно вы библиотеку math не подключили

единтсвенно, в начале кода к последующему списку можно присовокупить числа 1 и 2 для полноты картины
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
09.10.2009, 07:38
Цитата Сообщение от }{ottab Посмотреть сообщение
for (i=3; i<100; i++)
здесь можно написать по другому
C#
1
for (i=3;i<100;i+=2)
так как кроме двойки все остальные должны быть нечетные, и по этому не стоит проверять четные
1
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
09.10.2009, 11:25
Та то все не то! тм воды больше чем нужно!
Вычерпай !
В конце концов кто должен учиться писать программы ?
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
09.10.2009, 12:14
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");
 
 
}
1
 Аватар для nepster
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
09.10.2009, 16:16  [ТС]
спасибо конечно, но фор нельзя использовать (в задании). + я даже не знаю что за библиотека #include <math.h>
0
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
09.10.2009, 16:23
Цитата Сообщение от 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");
 
 
}
1
 Аватар для nepster
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
09.10.2009, 18:57  [ТС]
о отлично оно работает, только последнее но осталось! Выводит числа 9, 15, 25 и др. А это не простые числа, а как их убратЬ?
0
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
09.10.2009, 19:29
н-да. видимо автор несколько ошибся, замени
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)))
0
 Аватар для nepster
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
09.10.2009, 19:44  [ТС]
ой ой ой спасибо большое все заработало =)

Добавлено через 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
0
14 / 14 / 4
Регистрация: 08.10.2009
Сообщений: 114
09.10.2009, 19:59
Для этого можно использовать решето Эратосфена.

Добавлено через 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;
}
2
1 / 1 / 0
Регистрация: 09.02.2011
Сообщений: 21
24.02.2011, 01:10
Как вариант введу свой код, может кому-то пригодится:
(код готовой программы, которая выводит все простые числа, меньше чем число 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;
}
0
0 / 0 / 0
Регистрация: 11.07.2009
Сообщений: 21
13.08.2011, 12:29
вопрос снят
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.08.2011, 12:29
Помогаю со студенческими работами здесь

Вывести все простые числа до 100
Задача такова &quot;выведите все простые числа до 100&quot;, с помощью циклов (без массивов) и заумных вещей. Вот что наковырял. Не могу доделать....

Вывести все простые числа из диапазона от 1 до 100
Что не так с кодом? Должен выводить все простые числа от 1 до 100. Только учусь, потому может быть простая ошибка, но не #include...

Найти все простые числа до 100 и вывести их в combobox
Всем привет, помогите пожалуйста. Нужно найти все простые числа до 100, и вывести их в combobox.(программа должна сама рассчитывать простые...

Цикл: Вывести все простые числа в диапазоне от 1 до N
Вывести все простые числа в диапазоне от 1 до N

Цикл: Вывести все простые числа от M до N включительно
Вывести все простые числа от M до N включительно. Вывести числа в порядке возрастания, по одному в строке. Если между M и N включительно...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru