Ratkaistu: tarkista onko luku alkuluku

Viimeisin päivitys: 09/11/2023

Sen ymmärtäminen, onko luku alkuluku, on matematiikan peruskäsite. Alkuluvuilla on laaja valikoima sovelluksia salakirjoista näennäissatunnaisten lukujen luomiseen tietojenkäsittelytieteissä. Tänään aiomme kaivaa tätä käsitettä Haskellin, toiminnallisen ohjelmointikielen, avulla. Aloitamme ratkaisulla ja analysoimme sitten koodin vaiheittain. Lisäksi tämä artikkeli sisältää oivalluksia alkuluvuista eri kirjastoissa ja funktioissa.

alkuluvut määritellään luvuksi, jolla on vain kaksi erillistä luonnollisen luvun jakajaa: 1 ja itse. Tehtävä tarkistaa, onko luku alkuluku, sisältää sen määrittämisen, onko luvulla muita jakajia ykkösen ja itsensä lisäksi.

Katsotaan nyt Haskellin ratkaisua.

isPrime :: Int -> Bool
isPrime n = nolla [ x | x <- [2..n - 1], n `mod` x == 0] [/code]

Koodin ymmärtäminen

Tässä koodissa meillä on funktio nimeltä 'isPrime', se ottaa argumenttinaan kokonaisluvun, joka palauttaa loogisen arvon. Tämä toiminto käyttää Haskellin sisäänrakennettua "null"-funktiota, joka tarkistaa, onko sille annettu luettelo tyhjä vai ei.

Alkuluvun logiikka on toteutettu listan ymmärtämisen muodossa. Listan ymmärtämisen sisällä luomme luettelon numeroista 2:sta (n-1) ja tarkistamme, onko 'n' jaollinen millä tahansa näistä elementeistä.

  • [2..n-1] : Luo luettelon luvuista 2:sta yhteen numeroa pienempään.
  • n `mod` x : Tarkistaa, onko luku n jaollinen millä tahansa luodussa luettelossa olevalla luvulla.

Jos luku on jaollinen, niin sanomme, että luku ei ole alkuluku, muuten se on alkuluku. Nolla-funktio tarkistaa, onko luotu luettelo tyhjä vai ei. Jos on, 'null' palauttaa arvon True, mikä osoittaa, että luku on alkuluku.

Haskell-kirjastot ja Prime-tarkistuksia tukevat toiminnot

Haskell tarjoaa runsaasti kirjastoja ja toimintoja, jotka voivat auttaa sinua käsittelemään alkulukuja. Jotkut näistä sisältävät:

  • Numerot-paketti sisältää joukon toimintoja, jotka voivat seuloa alkulukuja, generoida alkulukuja ja tarkistaa primaalisuuden.
  • "Math.NumberTheory.Primes" on toinen alkulukukäsittelyyn tarkoitettu kirjasto.
  • "Arithmoi" on Haskell-kirjasto, joka keskittyy lukuteorian paradigmoihin. Se sisältää algoritmin alkulukujen tuottamiseksi, tekijän koostumuksia ja paljon muuta.

Vaikka Haskellissa on sisäänrakennettuja kirjastotoimintoja, alkulukujen tarkistuksen takana olevan logiikan oppiminen ja hajottaminen antaa sinulle vahvemman perustan kielelle ja antaa sinulle mahdollisuuden ratkaista edistyneempiä ongelmia. Tämä käytännönläheinen lähestymistapa on yleensä parempi, kun halutaan ymmärtää Haskellin kaltaisen kielen syvempiä toimintoja.

Lisätutkimukset

Alkulukutarkistuksen ymmärtäminen muodostaa perustan monille matemaattisille tehtäville. Primaalisuuden tarkistuksen lisäksi voit myös syventyä:

  • Luodaan kaikki alkuluvut tiettyyn rajaan asti
  • Alkulukujen määrän määrittäminen tiettyyn rajaan asti (alkulukutoiminto)
  • Lukujen kertominen alkuluvuiksi
  • Kaikille näille ongelmille on Haskellissa tehokkaita ratkaisuja, jotka osoittavat toiminnallisen ohjelmoinnin vahvuuden ja kauneuden matemaattisten ongelmien ratkaisemisessa.

Related viestiä: