vanha koetehtävä - miten pääsee alkuun

Hei

Alkeiskurssilla oheinen tehtävä. Ollut vanha koetehtävä. Voisiko joku autaa siinä alkuun?

Kaikki kokonaisluvut voidaan esittää tuloina ykkösen kanssa, esimerkiksi 23 == 23 * 1, ja
lisäksi muut kuin vain itsellään ja yhdellä jaolliset (eli alkuluvut) vähintään yhdellä muulla
tavalla, esimerkiksi -15 == -5 * 3.
Toteuta ohjelma, joka tulostaa käyttäjän yksitellen antamista kokonaisluvuista N kappaletta eri
esityksiä kahden kokonaisluvun tuloina edellä mainitulla tavalla, mikäli mahdollista. Jos
käyttäjän antama luku voidaan esittää kahden luvun tuloina alle N tavalla, tulostetaan kaikki
esitystavat. (Vihje: int/int)
Arvo N on annettava ohjelmaa käynnistettäessä komentoriviparametrina, ja sen tulee olla
vähintään 1 sekä enintään 9. Luku 0 syötteenä päättää ohjelman suorituksen.
Muista opastaa käyttäjää vuorovaikutteisesti sekä varautua virhetilanteisiin niin, ettei
ohjelman suoritus pääse keskeytymään (kaatumaan) ajon aikana.
2396
Äänestä

Muut lukivat myös

Vastaukset 2

Vanhimmat

Luku = 12, N = 9:

3*4
-3*-4
2*6
-2*-6

Luku = 4, N = 9:

2*2
-2*-2

Luku = -4, N = 9: (Meneekö tämä oikein)

-2*2
2*-2

Luku = 6, N = 9: (Meneekö tämä oikeein)

3*2
2*3
-3*-2
-2*-3

Meneekö nuo kaksi viimeistä oikein, vai pitäisikö esim. noiden nelosten mennä seuraavasti:

Luku = 4, N = 9:

2*2
-2*-2

Luku = -4, N = 9:

-2*2

Äänestä

Tehtävässä tuskin vaaditaan korkeampaa matematiikkaa lonkalta nakattuna, joten voit käyttää ns. trial division algoritmia, eli kokeilet luvulle eri tekijöitä.

Olkoon k jokin kokonaisluku. Jos sillä on ykkösestä poikkeavia tekijöitä, yksi niistä on alle neliöjuuri k:sta. Tutkit siis kaikki luvut väliltä [2,sqrt(k)] ja kokeilet, jakavatko ne luvun k tasan. Sen voit tehdä jakojäännösoperaattorilla %.

if (k % jakaja == 0) {...}

Jos yksikään luku tältä väliltä ei jaa k:ta, kyseessä on alkuluku. silloin on vain tuo esitys

k == k * 1

Jos taas jakaja löytyy, saat uuden luvun k2 tutkittavaksi, kun jaat sen löydetyn tekijän pois k:sta. Tätä pitää jatkaa N kertaa, tai lopettaa, jos löytyy alkuluku.

Käyttöliittymän jätän vastuullesi. Kysy lisää ja näytä yritelmäkoodia, niin joku kyllä auttaa. Kunhan teet jotain itsekin, niin kaikki on hyvin meidän mielestämme :-)

Äänestä

Kommentoi aloitusta


Tero M. kirjoitti:

Hei

Alkeiskurssilla oheinen tehtävä. Ollut vanha koetehtävä. Voisiko joku autaa siinä alkuun?

Kaikki kokonaisluvut voidaan esittää tuloina ykkösen kanssa, esimerkiksi 23 == 23 * 1, ja
lisäksi muut kuin vain itsellään ja yhdellä jaolliset (eli alkuluvut) vähintään yhdellä muulla
tavalla, esimerkiksi -15 == -5 * 3.
Toteuta ohjelma, joka tulostaa käyttäjän yksitellen antamista kokonaisluvuista N kappaletta eri
esityksiä kahden kokonaisluvun tuloina edellä mainitulla tavalla, mikäli mahdollista. Jos
käyttäjän antama luku voidaan esittää kahden luvun tuloina alle N tavalla, tulostetaan kaikki
esitystavat. (Vihje: int/int)
Arvo N on annettava ohjelmaa käynnistettäessä komentoriviparametrina, ja sen tulee olla
vähintään 1 sekä enintään 9. Luku 0 syötteenä päättää ohjelman suorituksen.
Muista opastaa käyttäjää vuorovaikutteisesti sekä varautua virhetilanteisiin niin, ettei
ohjelman suoritus pääse keskeytymään (kaatumaan) ajon aikana.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu