C programozásban prímszám-e feladatot gyökösként is megtudom csinálni, csak nem teljesen értem. A kérdés tehát az lenne, hogy hogyan végzi el a számításokat a gyökös prímszám ellenőrző?
Tudtommal ha úgy adom meg,hogy (részlet)
i<sqrt(szam)
akkor elvileg csak a szám gyökéig nézi,de a gyök 15 az 3,8729 ,de idáig ez mind prímszám mert ugyebár a 2 és a 3 is prím.De akkor most a 3,8729-t felkerekíti 4-re,mert a 15 ugyebár nem prím.
@#9:
„A gyök 25-re meg ugyebár az a megoldás, hogy növelem az i-t és maradékos osztást végzek (0-e a maradék).”
Inkább az, hogy <= feltétel is létezik a világon. Bár törtszámok esetén egyenlőségre vizsgálni mindig kockázatos, tehát azt előtte még helyre kéne tenni, hogy mit tekintsen egyenlőnek.
De szerintem #8 megoldása tisztább és jóval takarékosabb, nem egészen értem, hogy miért pontozta le valaki.
„#3 sztem ugyanarra gondoltál mint #4 :D”
Az efféléken meg ne lepődj meg. A fogalmazgatás meg a teázás időbe telik, és néha megesik, hogy a válasz beküldése előtt elfelejtem ellenőrizni, nem válaszolt-e közben más, esetleg valami sokkal okosabbat.
Beszállhatok én is egy megoldással ?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int prime(int szam)
{
if (szam == 2) return 1;
if ((szam <= 1) || (szam % 2 == 0)) return 0;
int i = 3, meddig = sqrt(szam), igaz = (szam % 2) != 0;
while ((igaz) && (i <= meddig)){
igaz = (szam % i) != 0;
i += 2;
}
return igaz;
}
int main()
{
int i;
for (i = 1; i < 50; i++)
if (prime(i)) printf("prim: %d\n", i);
else
printf("nem prim: %d\n", i);
system("PAUSE");
return 0;
}
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!