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

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

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

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

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

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

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

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

Вывести простые числа от 1 до 100 - C++
Программа должная выводить все простые числа от 1 до 100. Вот, вроде написал, но не могу понять, почему не выводит 1, 3, 7. #include...

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

Найти все простые числа в диапазоне от 1 до 100 - C++
Заранее прошу прощения за , возможно, глупые вопросы, так как я новичок и на форуме и в програмировании. Начал с С++ (знаю не лучший выбор...

Найти все простые числа из интервала от 100 до 1000, используя логическую функцию - C++
Нужно написать программу, буду премного благодарен) Знаю, что на самом деле тут всё просто, но я только начал учиться и пока не совсем...

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

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

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

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

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

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

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

КонецЦикла;

КонецЕсли;

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


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

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


minitup

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

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

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

единтсвенно, в начале кода к последующему списку можно присовокупить числа 1 и 2 для полноты картины
0
mamedovvms
2917 / 838 / 93
Регистрация: 30.04.2009
Сообщений: 2,627
09.10.2009, 07:38 #10
Цитата Сообщение от }{ottab Посмотреть сообщение
for (i=3; i<100; i++)
здесь можно написать по другому
C#
1
for (i=3;i<100;i+=2)
так как кроме двойки все остальные должны быть нечетные, и по этому не стоит проверять четные
1
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
09.10.2009, 11:25 #11
Та то все не то! тм воды больше чем нужно!
Вычерпай !
В конце концов кто должен учиться писать программы ?
0
mamedovvms
2917 / 838 / 93
Регистрация: 30.04.2009
Сообщений: 2,627
09.10.2009, 12:14 #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");
 
 
}
1
nepster
61 / 61 / 1
Регистрация: 19.09.2009
Сообщений: 844
09.10.2009, 16:16  [ТС] #13
спасибо конечно, но фор нельзя использовать (в задании). + я даже не знаю что за библиотека #include <math.h>
0
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
09.10.2009, 16:23 #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");
 
 
}
1
nepster
61 / 61 / 1
Регистрация: 19.09.2009
Сообщений: 844
09.10.2009, 18:57  [ТС] #15
о отлично оно работает, только последнее но осталось! Выводит числа 9, 15, 25 и др. А это не простые числа, а как их убратЬ?
0
09.10.2009, 18:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2009, 18:57
Привет! Вот еще темы с ответами:

Дано натуральное число. Вывести на экран все простые числа до заданного числа. - C++
Дано натуральное число. Вывести на экран все простые числа до заданного числа.

Одномерный массив. Вывести на экран все числа, индексы которых есть простые числа. - C++
Нужно вывести на экран все числа заданной последовательности, индексы которых есть простые числа. Определить в заданной последовательности...

Вывести все простые числа до n - C++
должно быть так bool SimpleNumber(long int) int main() telo ........

Вывести все простые числа до заданного числа - C++
Нужно вывести все простые числа до заданного числа N. С помощью процедуры и без массивов.


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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