• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/rsabcmath.php
  • Класс: CRsaBcmathProvider
  • Вызов: CRsaBcmathProvider::is_prime
static function is_prime($in)
{
	static $ps = null;
	static $psc = 0;
	if(is_null($ps)) 
	{
		$ps = array();
		for($i = 0; $i < 10000; $i++) 
			$ps[] = $i;
		$ps[0] = $ps[1] = 0;
		for($i = 2; $i < 100; $i++) 
		{
			while(!$ps[$i]) 
				$i++;
			$j = $i;
			for($j += $i; $j < 10000; $j += $i) 
				$ps[$j] = 0;
		}
		$j = 0;
		for($i = 0; $i < 10000; $i++) 
		{
			if($ps[$i]) $ps[$j++] = $ps[$i];
		}
		$psc = $j;
	}

	for($i = 0; $i < $psc; $i++) 
	{
		if(bccomp($in, $ps[$i]) <= 0) 
			return true;
		if(!bccomp(bcmod($in, $ps[$i]), '0')) 
			return false;
	}

	for($i = 0; $i < 7; $i++) 
	{
		if(!self::miller($in, $ps[$i])) 
			return false;
	}
	return true;
}