Нет, классический int ... при небольших и больших p1 и p2. Разное время выполнения алгоритма.
А как вы это поняли? Вот простенький тест, числа не выходят за пределы 32-битных int, считаем по десять миллионов итераций:
use strict;
use integer;
use Benchmark qw/cmpthese/;
use constant p1 => 3;
use constant p2 => 5;
use constant p3 => 3996017;
use constant p4 => 3997859;
my ( $x1, $x2, $y1, $y2 ) =
(
int(rand(1000000))+100000, int(rand(1000000))+100000,
int(rand(1000000))+100000, int(rand(1000000))+100000
);
cmpthese
(
10000000,
{
'Small primes' =>
sub
{
my $rc = ($x1 * $x2 + p1 * $y1 * $y2) % p2;
},
'Big primes' =>
sub
{
my $rc = ($x1 * $x2 + p3 * $y1 * $y2) % p4;
},
}
);
Разница - да, какая-то есть, но на прямо-таки разницу не очень похоже :)
Rate Small primes Big primes
Small primes 2915452/s -- -3%
Big primes 3003003/s 3% --
int
, правильно?