Sökning av divisorer ( försöksdivision ) är en algoritm för att faktorisera eller testa enkelheten hos ett tal genom att uttömmande räkna upp alla möjliga potentiella divisorer .
Vanligtvis består uppräkning av divisorer i uppräkning av alla heltal (som ett alternativ: primtal ) från 2 till kvadratroten av det faktoriserbara talet n och i att beräkna resten av att dividera n med vart och ett av dessa tal. Om resten av division med något tal i är 0, så är i en divisor av n . I det här fallet deklareras antingen n sammansatt och algoritmen avslutas (om n testas som primtal ) , eller så reduceras n med i och proceduren upprepas (om n faktoriseras ). När kvadratroten av n nås och omöjligheten att reducera n till något av de mindre talen, deklareras n som primtal [1] .
För att påskynda uppräkningen kontrolleras ofta inte jämna divisorer, förutom talet 2, samt divisorer som är multiplar av tre, förutom talet 3. I det här fallet accelereras testet tre gånger, eftersom av varje sex på varandra följande potentialdelare är det nödvändigt att kontrollera endast två, nämligen av formen 6 k ±1, där k är ett naturligt tal .
Det värsta fallet är om du måste iterera från 2 till roten av n . Komplexiteten i denna algoritm
För att illustrera, låt oss räkna upp divisorerna för talet n = 29. i är de möjliga divisorerna för n .
i | n % i |
---|---|
2 | ett |
3 | 2 |
fyra | ett |
5 | fyra |
Eftersom ingen av resten av 29 är 0, deklareras 29 som primtal.
Låt nu n = 7399, sedan [2]
i | n % i |
---|---|
2 | ett |
3 | ett |
fyra | 3 |
5 | fyra |
6 | ett |
7 | 0 |
Eftersom resten av divisionen av 7399 med 7 är 0, är 7399 inte primtal.
I praktiska problem används denna algoritm sällan på grund av dess höga beräkningskomplexitet , men dess användning är motiverad om siffrorna som kontrolleras är relativt små, eftersom denna algoritm är ganska lätt att implementera [1] .