Kezdőoldal » Számítástechnika » Programozás » Miért nem jó ez a nyomorult...

Miért nem jó ez a nyomorult "prím-e" függvény? (háromnál nagyobb számokra)

Figyelt kérdés

Benne van:

- a bekért szám négzytegyökéig

- csak és kizárólag azokkal a számokkal nézi meg, amik nem párosak (így az i kettővel növekszik)



Próbáltam már vagy 5 féleképpen a while feltételt, próbáltam for ciklussal, nem jó.


static bool prim_e(int s)

{

bool eredmeny=false;

int eddig = (int) (Math.Sqrt(s));


int i=3;

if (s > 3)

{

while (i <= eddig && eredmeny==false)

{

if (s % i == 0) eredmeny = false;

else eredmeny = true;

i += 2;

}


}



return eredmeny;

}


2015. márc. 24. 18:00
 1/3 Tengor ***** válasza:

Az else ág miatt, az nem kell bele.

Számolós ciklusokat szerencsésebb for-ral megvalósítani.

2015. márc. 24. 18:16
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:

Kicsit leegyszerűsítve és javítva. 2-vel is meg kell nézni osztható-e és rossz volt a feltétel.


static bool prim_e(int s)

{

bool prim = (i%2 == 1);

int eddig = (int) (Math.Sqrt(s));


for(int i=3; i <= eddig && prim; i+=2)

{

if (s % i == 0) prim = false;

}


return prim;

}

2015. márc. 24. 18:34
Hasznos számodra ez a válasz?
 3/3 A kérdező kommentje:

Köszi a válaszokat. :)


Első hozzászólás alapján kivettem az else-t, a feltétel módosult és kezdőértéke is más lett a bool-nak.


Második hozzászóló: tényleg, kettővel is kell vizsgálni.

Val.szeg eszembe jutott volna később is. :D

2015. márc. 24. 18:39

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!