Лучший способ проверить, является ли число простым, - это увидеть, делится ли оно каким-либо простым числом перед ним. Pi (x) - это тот, который я все время вижу повсюду ... Вы можете увидеть немного больше информации о Prime Counting на wikipedia .
Итак, самый эффективный способ, который я могу придумать на данный момент следующее:
class prime
{
public $primes = [ 2, 3, 5, 7 ];
public $not_prime = [ 1, 4, 6, 8, 9 ];
public function is_prime( int $n )
{
if ( $n <= 1 ) return false;
if ( in_array( $n, $this->primes ) ) return true;
if ( in_array( $n, $this->not_prime ) ) return false;
for( $i = 0; $i < count( array_slice( $this->primes, 0, $this->prime_count( $n ) ) ) || $i == $n; $i++ )
{
if ( $n % $this->primes[ $i ] == 0 ) return false;
}
return true;
}
public function build_primes_to( int $n )
{
for ( $i = end( $this->primes ) + 1; $i <= $n; $i++ )
{
if ( $this->is_prime( $i ) )
{
$this->primes[] = $i;
}
else
{
$this->not_prime[] = $i;
}
}
}
public function prime_count( $n )
{
$ln = log( $n );
if ( $ln == 0 ) return 1;
return intval( ceil( $n / $ln ) );
}
}
Это не очень эффективно, ну, а не когда дело доходит до создания списка простых чисел ... Я работал лучше для создания списка здесь , хотя было бы легко и гораздо эффективнее найти список в Интернете и использовать его.
Использование вышеперечисленного было бы в соответствии с :
$find_to = 1000;
$prime = new prime();
$prime->build_primes_to( $find_to );
print "";
for ( $i = 1; $i < $find_to; $i++ )
{
print "$i is " . ( !$prime->is_prime( $i ) ? "not " : "" ) . "prime\n";
}
Из своего форума: https://devtalk.nvidia.com/default/topic/493290/multiple-cuda-versions-can-they-coexist-/ , они сказали, что несколько разных версий CUDA может сосуществовать! Просто загрузите все версии, которые вам нужны, и загрузите все патчи (мигание или нет) и соответствующие cuDNN. Я установил shadoworflow в виртуальной среде, используя conda, и после того, как все было установлено (перезапустите компьютер / повторно откройте командную строку несколько раз), теперь он работает!
Если вы установили более высокую версию Cuda, просто запустите установщик Cuda с более низкой версией, он автоматически удалит установленную версию, если ее не будет той же версии. В моем случае в Windows 10 Cuda9.2 был удален установщиком Cuda9.0. Спасибо!
У меня была одна и та же проблема, и я решил ее, изменив python 3.5 на python 3.6. Надеюсь, вы тоже сможете это решить.