Для начала приведем два небольших примера.
Допустим нужно получить список
всех простых чисел(мы ограничися перебором до тысячи, т.к. ждать долго ~30 sekund for my server p100, 32 ram, red hat linux7.1, perl 5.0.6), пишем программу:
#!/usr/bin/perl -sw
use Quantum::Superpositions;
sub is_prime { return $_[0]==2 || $_[0] % all(2..sqrt($_[0])+1) != 0 }
do{print "$_ - простое число\n" if is_prime($_)} for map {2*$_+1} 1..1000;
на выводе имеем нечто вроде:
** Joe's Own Editor v2.9.5 ** Copyright (C) 2001 **
File demo_Primes.pl not changed so no update needed.
[root@tv demo]# ./demo_Primes.pl
3 - простое число
5 - простое число
7 - простое число
11 - простое число
13 - простое число
17 - простое число
19 - простое число
23 - простое число
29 - простое число
31 - простое число
37 - простое число
41 - простое число
43 - простое число
47 - простое число
53 - простое число
59 - простое число
61 - простое число
67 - простое число
71 - простое число
73 - простое число
79 - простое число
83 - простое число
89 - простое число
97 - простое число
101 - простое число
103 - простое число
107 - простое число
109 - простое число
[root@tv demo]#
Или нужно получить все сомножители какого-то числа:
#!/usr/bin/perl -w
use Quantum::Superpositions UNARY => ['CORE::int'];
sub factors {eigenstates (int($_[0] / any(2..$_[0]-1)) == ($_[0] / any(2..$_[0]-1)))}
print int($_), "\n factors: ", join(",", factors($_)), "\n" while (<>);
На выводе имеем:
[root@tv demo]# ./factors.pl
8
8
factors: 2,4
121
121
factors: 11
56
56
factors: 7,8,14,2,4,28
78
78
factors: 13,39,2,3,26,6
[root@tv demo]#
теперь перевод полутора manual-ов, описывающих квантовый подход, при помощи
которого работают эти и некоторые другие программы(остальные примеры см. в самом низу текста);