Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] решета Эрастофена.


Автор: liss87 15.10.2007, 22:58
Здравствуйте.
Помогите,пожалуйста,написать программу.
Требуется разработать программу для поиска простых чисел в заданном промежутке,верхняя и нижняя границы которого заданы.(например,передаются через командную строку)
Поиск должен осуществляться по методу решета Эрастофена.
Программа должна быть написана на языке С или С++.
буду очень благодарна,потому что сама справиться не могу

Автор: MAKCim 16.10.2007, 08:30
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: FREEDEV 16.10.2007, 11:53
вот http://alglib.sources.ru/numbers/erat.php
алгоритм не смотрел

Автор: Dov 16.10.2007, 22:06
Код

#include <iostream.h>

void Resheto(int ar[], int i, int upper)
{
    if(i < upper)
    { 
        int z = i;  
        while(z <= upper)
        {
            z += i;
            for(int j = 0; j < upper; j++)
                if(z == ar[j])
                    ar[j] = 0;
        }   
        Resheto(ar, i + 1, upper);  
    }
}

int main(int argc, char* argv[])
{
    if(argc != 3)
    {
        cout << "Error\n";
    }
    else
    {
        int  low = atoi(argv[1]);
        int  upp = atoi(argv[2]);
        int* arr = new int[upp];
        int  i   = 0;
        int  j   = 1;

        while(i < upp)
            arr[i++] = j++;

        Resheto(arr, 2, upp);

        for(j = low - 1; j < upp; j++)    
            if(j >= 0 && arr[j])      
                cout << arr[j] << endl;

        delete[] arr;
    }

    return 0;        
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)