LINUX.ORG.RU

История изменений

Исправление TomBOY, (текущая версия) :

Python 2.7.3 и там и там.
Тут проскакивала ещё мерялка:

#include <assert.h>
#include <stdlib.h>
#include <stdbool.h>

#ifdef VECTOR
#include <vector>
#endif

int main()
{
    const int n = 1214739071;
    int prime_count=0;
    assert( sizeof(char)==1 ); /// ну мало ли...
#ifdef VECTOR
    std::vector<char> is_prime(n+1);
#else
    char* is_prime = (char*) malloc(n+1);
    if( !is_prime ) return 1;
#endif
    for( int i=2; i<=n; ++i )  is_prime[i] = true;

    is_prime[0] = is_prime[1] = false;

    for( int p=2; p*p<=n; ++p )
    {
        if( is_prime[p] )
        {
            for( int i=p*p; i<=n; i+=p )
            {
                is_prime[i] = false;
            }
        }
    }

    for( int i=0; i<20; ++i )
    {
        if( is_prime[i] )  printf("%d ",i);
    }

    for( int i=0; i<=n; ++i )
    { 
        prime_count += is_prime[i];
    }

    printf( "prime_count=%d\n", prime_count );

    return 0;
}
Здесь тоже разброс хороший. 4С - 47 сек R1000 - 4:50 мин.

Исходная версия TomBOY, :

Python 2.7.3 и там и там.
Тут проскакивала ещё мерялка:

#include <assert.h>
#include <stdlib.h>
#include <stdbool.h>

#ifdef VECTOR
#include <vector>
#endif

int main()
{
    const int n = 1214739071;
    int prime_count=0;
    assert( sizeof(char)==1 ); /// ну мало ли...
#ifdef VECTOR
    std::vector<char> is_prime(n+1);
#else
    char* is_prime = (char*) malloc(n+1);
    if( !is_prime ) return 1;
#endif
    for( int i=2; i<=n; ++i )  is_prime[i] = true;

    is_prime[0] = is_prime[1] = false;

    for( int p=2; p*p<=n; ++p )
    {
        if( is_prime[p] )
        {
            for( int i=p*p; i<=n; i+=p )
            {
                is_prime[i] = false;
            }
        }
    }

    for( int i=0; i<20; ++i )
    {
        if( is_prime[i] )  printf("%d ",i);
    }

    for( int i=0; i<=n; ++i )
    { 
        prime_count += is_prime[i];
    }

    printf( "prime_count=%d\n", prime_count );

    return 0;
}
Здесь тоже разброс хороший. 4С - 47 сек R1000 - 4:50 мин.