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

Подсчитать количество простых чисел в произвольном интервале - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.87
NormalName
Сообщений: n/a
22.12.2010, 21:42     Подсчитать количество простых чисел в произвольном интервале #1
Подсчитать количество простых чисел в произвольном интервале. Границы интервала задаются с клавиатуры.

#include<iostream>
using namespace std;
int main()
{
int min, max;
cout << "Enter min: " ; cin >> min;
cout << "Enter max: " ; cin >> max;
int* arr;
arr= new int[max-min+1];
int cur=min;
for(int i=0; i<=max-min; i++)
arr[i] = cur++;
for(int i=0; i<=max-min; i++)
cout << arr[i] << endl;
cin >> cur;

-------------------------------------------------------------------
вывели все числа с произвольного интервала. Как теперь их проверить на простоту и посчитать их количество, а?

Проверка на простоту должна выглядеть по-моему как-то так:

bool is_prime(int n) {
if (n <= 1)
return false;

for (int j = 2; j * j <= n; j++)
if (n % j == 0) return false;

return true;
}
---------------------------------------------------------------------------------------------
Дальше получаются одни крокодилы. Не подскажите?!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
deadlock
 Аватар для deadlock
372 / 351 / 7
Регистрация: 14.12.2010
Сообщений: 1,265
22.12.2010, 21:50     Подсчитать количество простых чисел в произвольном интервале #2
вот функция, находящая все простые числа в интервале a,b:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int *Prost(int a,int b)
{
    int *p=new int[b-a];
    for (int i=0;i<b-a;i++) p[i]=0;
 
    p[0]=2;
    int counter=1;
    for (int i=a;i<b;i++)
     {
       int pr=0;
        for (int k=0;k<counter;k++)
        {
           if (i%p[k]!=0) pr++;
           if (k==counter-1&&pr==counter)
            {
               p[counter]=i;
               counter++;
            }
        }
     }
    return p;
}
возвращает указатель на массив простых чисел из заданного диапазона
NormalName
Сообщений: n/a
22.12.2010, 23:36     Подсчитать количество простых чисел в произвольном интервале #3
Хм. Благодарен за тело.
однако не выводит количество простых чисел как ни крути... в чем мой косяк?
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
setlocale(LC_ALL,"Russian");
int a,b;
cout<<"Введите границы интервала: "<<endl;
cout<<"Минимум: ";
cin>>a;
cout<<"Максимум: ";
cin>>b;
}
int *Prost (int a,int b)
{
int *p=new int[b-a];
for (int i=0;i<b-a;i++) p[i]=0;
p[0]=2;
int counter=1;
for (int i=a;i<b;i++)
{
int pr=0;
for (int k=0;k<counter;k++)
{
if (i%p[k]!=0) pr++;
if (k==counter-1&&pr==counter)
{
p[counter]=i;
counter++;
}
}
}
cout<<"Количество простых чисел в заданном интервале равно: ";
cin>>i;
return p;
}
deadlock
 Аватар для deadlock
372 / 351 / 7
Регистрация: 14.12.2010
Сообщений: 1,265
23.12.2010, 01:03     Подсчитать количество простых чисел в произвольном интервале #4
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
#include <iostream>
#include <fstream>
using namespace std;
 
int *Prost (int a,int b)
{
 int *p=new int[b-a];
  for (int i=0;i<b-a;i++) p[i]=0;
 p[0]=2;
 int counter=1;
  for (int i=a;i<b;i++)
   {
     int pr=0;
      for (int k=0;k<counter;k++)
       {
         if (i%p[k]!=0) pr++;
         if (k==counter-1&&pr==counter)
          {
            p[counter]=i;
            counter++;
          }
       }
   }
return p;
}
 
int main(int argc, char *argv[])
{
    setlocale(LC_ALL,"Russian");
    int a,b,*array;
    cout<<"Введите границы интервала: "<<endl;
    cout<<"Минимум: ";
    cin>>a;
    cout<<"Максимум: ";
    cin>>b;
    array=new int[b-a];
    for (int i=0;i<b-a;i++) array[i]=0;
    array=Prost(3,b);
    int counter=0;
    for (int i=0;i<b-a;i++)
     {
        if (array[i]!=0&&array[i]>=a)
         {
            cout<<array[i]<<" ";
            counter++;
         }
     }
    cout<<"\nКоличество простых чисел в заданном интервале равно: "<<counter;
}
Yandex
Объявления
23.12.2010, 01:03     Подсчитать количество простых чисел в произвольном интервале
Ответ Создать тему
Опции темы

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