русский
Germany.ruForen → Архив Досок→ Programmierung

Поиск простого числа

262  1 2 3 alle
Murr коренной житель08.11.06 18:22
Murr
NEW 08.11.06 18:22 
in Antwort scorpi_ 08.11.06 17:55
Каким образом?
-----
За счет префиксного декремента, устанавливающего флаг равенства нулю. Правда для того, чтобы оценка (0.10) была верной там должен быть только развернутый код.
Вместо:
for( unsigned long counter = 1; counter < number; ++counter )
for( unsigned long counter = number; --counter; /* no */ )
И так же со вторым циклом.
#41 
Murr коренной житель08.11.06 18:27
Murr
NEW 08.11.06 18:27 
in Antwort scorpi_ 08.11.06 18:04
а твой алгоритм O(n^3)
------
он предлагал понизить до О(n*sqrt(n)), если я не ошибаюсь...
#42 
  scorpi_ скептик08.11.06 18:51
NEW 08.11.06 18:51 
in Antwort Murr 08.11.06 18:22
Да, можно. Только измеримых результатов не даёт, так как это одна однотактовая команда.
#43 
  scorpi_ скептик08.11.06 19:40
NEW 08.11.06 19:40 
in Antwort Murr 08.11.06 18:27, Zuletzt geändert 13.11.06 12:54 (scorpi_)
А, я его постинга сразу не заметил... Тогда да, О(n^1,5), первоначальный вариант кстати был конечно же О(n^2), а не в куб.
Короче вот -
В ответ на:
unsigned long get_prime_by_barmaglot( unsigned long number )
{
if ( number == 1 )
return 2;
std::vector<unsigned long> found_primes( 1, 2 );
found_primes.reserve( number );
unsigned long i = 3;
for( unsigned long counter = number - 1; counter; i += 2 )
{
for( unsigned long j = 0; j < found_primes.size(); ++j )
if ( i < found_primes[j] * found_primes[j] || i % found_primes[j] == 0 )
break;
found_primes.push_back( i );
--counter;
}
return i - 2;
}


Даёт ответ за 15сек, против 0.85 для решета (number =1000000)
#44 
Murr коренной житель08.11.06 20:06
Murr
NEW 08.11.06 20:06 
in Antwort scorpi_ 08.11.06 18:51, Zuletzt geändert 08.11.06 20:09 (Murr)
так как это одна однотактовая команда.
-----
На базовом i8086, DEC и ИБМ360 в одну команду укладываться не удавалось...
#45 
  scorpi_ скептик08.11.06 20:12
08.11.06 20:12 
in Antwort Murr 08.11.06 20:06
Такого антиквариата я не застал.
#46 
barmaglot местный житель09.11.06 09:54
barmaglot
NEW 09.11.06 09:54 
in Antwort scorpi_ 08.11.06 18:04
Лень мне вникать во всё написанное. Ты опроверг утверждение про четыре порядка для простых до 32 тысяч? Если вдруг да (весьма сомнительно ) -- вечером как будет время напишу и проверю сам.
Что касается
В ответ на:
всё ещё на 8086 сидишь? Бедненьий...

то "сижу" я на таком (http://www.rzg.mpg.de/computing/IBM_P5/hardware.html), от чего знающему человеку впору захлебнуться слюнями .
#47 
Murr коренной житель09.11.06 10:38
Murr
NEW 09.11.06 10:38 
in Antwort barmaglot 09.11.06 09:54
вечером как будет время напишу и проверю сам.
------
Тебе предлагалось это сделать еще вчера...
#48 
1 2 3 alle