Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/2m/polyfact
Polynomial Factorization
https://github.com/2m/polyfact
Last synced: 22 days ago
JSON representation
Polynomial Factorization
- Host: GitHub
- URL: https://github.com/2m/polyfact
- Owner: 2m
- License: other
- Created: 2010-12-05T12:57:13.000Z (almost 14 years ago)
- Default Branch: main
- Last Pushed: 2024-09-16T12:52:19.000Z (about 2 months ago)
- Last Synced: 2024-09-16T14:58:02.077Z (about 2 months ago)
- Language: Java
- Homepage:
- Size: 326 KB
- Stars: 1
- Watchers: 4
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Plolinomų Faktorizacija [![maven-central-badge][]][maven-central] [![travis-badge][]][travis]
[maven-central]: https://search.maven.org/#search%7Cga%7C1%7Cpolyfact
[maven-central-badge]: https://maven-badges.herokuapp.com/maven-central/lt.dvim.polyfact/polyfact/badge.svg
[travis]: https://travis-ci.com/2m/polyfact
[travis-badge]: https://travis-ci.com/2m/polyfact.svg?branch=master## Programos aprašymas
Ši programa faktorizuoja polinomus pavidalo f(x) = xn - 1 virš kūno Fq.
Taigi programoje reikia įvesti **n** ir **q** (turi būti pirminis) parametrus.
Tada programa išves visus polinomo f(x) pirminius daugiklius kartu su tarpniais rezultatais.## Programos kompiliavimas ir paleidimas
Programos kompiliavimui ir paleidimui yra naudojamas [sbt](https://www.scala-sbt.org/) įrankis. Naudingos sbt komandos:
* **sbt package**
Sukompiliuos išeities tekstus ir sukurs paleidimo failą: `target/polyfact-<...>.jar`.
Programą galima paleisti du kartus spustelėjus ant sukurto failo.* **sbt run**
Paleidžia programą, kartu su konsolės langu.
* **sbt test**
Sukompiliuos programą, sukurs paleidimo failą ir paleis programą testavimo režime.
Visi testai yra aprašyti [`PolyFactTest.java`](src/test/java/PolyFactTest.java) faile.## Programos naudojimas kituose projektuose
Programa yra patalpinta Maven Central repozitorijoje iš kurios kiti projektai gali šitą programą naudoti kaip biblioteką. Taip pat naudojant [coursier](https://get-coursier.io/) galima šią programą paleisti tiesiai iš repositorijos naudojant šią komandą:
coursier launch lt.dvim.polyfact:polyfact:1.0
## Programos testavimas.
[`PolyFactTest.java`](src/test/java/PolyFactTest.java) faile yra aprašyta daug predikatų, kurie tikrina ar teisingai veikia aritmetikos operacijos bei faktorizavimas.
Predikatas atlieka tam tikrus veiksmus, ir patikrina rezultatą su žinomu rezultatu.
Visi aprašyti predikatai turi grąžinti reikšmę `true`. Jeigu bent vienas grąžina `false`, tai testavimo programa yra stabdoma.
Išspausdintas pranešimas nurodo, kuri operacija grąžino kitokį rezultatą negu tikėtasi.Testavimo programa bando įvarias aritmetines operacijas (sudėtis, atimtis, daugyba, dalyba, dbd), bei faktorizavimo algoritmą.
Štai tokie faktorizavimo algoritmo parametrai yra išbandomi.* **q** = 2, **n** = 7, 9, 15, 17
* **q** = 3, **n** = 4, 8, 10, 11, 13
* **q** = 5, **n** = 8, 13Atsakymai naudojant šiuos pavyzdžius yra tikrinami su atsakymais pateiktais [čia](http://uosis.mif.vu.lt/~skersys/10r/ktkt/uzduotys/gen_pol_pvz.htm).
## Naudota literatūra.
Pats faktorizavimo algoritmas yra paimtas iš:
*Scott A. Vanstone, Paul C. Van Oorschot*. **An introduction to error correcting codes with applications**, 1989, psl [187-192](http://uosis.mif.vu.lt/~skersys/doc/ktkt/literatura24.pdf).
Apie baigtinius kūnus bei ciklinius kodus skaičiau:
*Gintaras Skersys*. **Klaidas taisančių kodų teorija**, 2008. Galima rasti [čia](http://uosis.mif.vu.lt/~skersys/10r/ktkt/pagr.htm).