Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Kris235
0 / 0 / 0
Регистрация: 20.12.2015
Сообщений: 10
1

Найти все простые числа в заданном диапазоне

27.04.2016, 13:51. Просмотров 1539. Ответов 4
Метки нет (Все метки)

Найти все простые числа в промежутке между натуральными числами а и b (а > 2000, b - а ≥ 20)
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2016, 13:51
Ответы с готовыми решениями:

Найти все простые числа в заданном диапазоне и вывести их на экран
Доброго времени суток! Есть задачка, есть кривое решение. :) Суть задачки такова: найти все...

Найти простые числа в заданном диапазоне
помогите пожалуйста написать программку...я все уже тут посмотрела, никак не могу реализовать её ...

Вывести все простые числа в заданном диапазоне, которые являются палиндромами
Напишите программу , которая выводит все простые числа , которые являются палиндромами ( то есть...

Найти простые числа в заданном диапазоне (циклы)
Найти простые числа в диапазоне от 2 до 1000 цикл в цикле с помощью циклов for

Найти простые числа в заданном диапазоне с помощью решета Эратосфена
Задача: вывести простые числа в диапозоне от А до В. ( 2 ≤ А и ≤ В ≤ 100000 ) Если таких чисел...

4
TimeTwo
97 / 90 / 104
Регистрация: 29.11.2009
Сообщений: 407
27.04.2016, 16:43 2
Kris235,
C++
1
2
3
4
5
6
7
8
9
10
11
12
int simple(int n)
{
    if (n == 1) { return 0;}
    for(int i=2;i<= n/2;i++){ if((n%i)==0){ return 0;}}
    return 1;
}
void main(){
    ...
    for(int i=a;i<=b;i++)
        if(simple(array[i]) cout<<array[i]<<" ";
    ...
}
0
dcshowcousa
27 / 19 / 97
Регистрация: 22.10.2015
Сообщений: 304
28.04.2016, 11:17 3
TimeTwo, для больших чисел ваша функция simple будет очень медленной. И лучше искать решетом Эратосфена...
0
Fixer_84
1407 / 885 / 793
Регистрация: 30.04.2016
Сообщений: 3,006
30.04.2016, 17:08 4
#include <iostream>
#include <cmath>

using namespace std;

bool simple(int N)
{
for (int i = 2; i <= sqrt(N); i++)
if (N % i == 0) return false;
return true;
}

int main()
{
int a, b;
cin >> a >> b;
for (int i = a; i <= b; i++)
{
if (simple(i))
{
cout << i << " ";
}
}
cout << endl;
system("pause");
return 0;
}

Добавлено через 16 часов 11 минут
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>
#include <cmath>
 
using namespace std;
 
bool simple(int N)
{ 
for (int i = 2; i <= sqrt(N); i++)
if (N % i == 0) return false;
return true;
}
 
int main()
{
int a, b;
cin >> a >> b;
for (int i = a; i <= b; i++)
{
if (simple(i)) 
{
cout << i << " ";
}
}
cout << endl;
system("pause");
return 0;
}
0
Petrolion
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
Завершенные тесты: 1
30.04.2016, 17:44 5
Эратосфен конечно рулит, но обвязка получается большой, особенно при оптимизации расходов памяти.
Область тысяч и десятков тысяч - не такой уж большой. Можно так:
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
using namespace std;
#include <conio.h>
 
void main()
{
    int a, b;
    cout << "Input first and second numbers" << endl;
    cin >> a >> b;
    if (a > b)
    {
        cout << "Error range!";
        exit(1);
    }
    int lim = (int)(sqrt((float)b))+1;
    cout << "In range from: " << a << " to: " << b << endl;
    int *t = new int[5000];     //подготовка библиотеки простых для всего диапазона int
    t[0]=3;
    int a3 = 1;
    for (int i = 5; i <= lim; i+=2)
        {
            bool p = true;
            int mmma = (int)(sqrt((float)i))+1;
            for (int k = 0; (k < a3) && (t[k] <= mmma); k++)
            {
                if ((i % t[k]) == 0)
                {
                    p = false;
                    break;
                }
            }
            if (p)
            {
                t[a3++] = i;
            }
        }
 
    a |=1;
    for (int i = a; i <= b; i+=2)
        {
            bool p = true;
            int mmma = (int)(sqrt((float)i))+1;
            for (int k = 0; (k < a3) && (t[k] <= mmma); k++)
            {
                if ((i % t[k]) == 0)
                {
                    p = false;
                    break;
                }
            }
            if (p)
            {
                cout << i << "\t";  //тут либо экран либо в массив
            }
        }
_getch();
}
0
30.04.2016, 17:44
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2016, 17:44

Найти простые числа в заданном диапазоне с помощью решета Эратосфена и вывести их в файл
Для зачета задали написать программу для нахождения простых чисел от 1 до 1000000000 и вывод их в...

Найти все простые числа в диапазоне
Вообщем, такая дилемма, С++ только начали, уже задали задачу: пользователь вводит начало и конец...

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


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

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

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