Hirdetés

Új hozzászólás Aktív témák

  • Sk8erPeter
    nagyúr

    Egy prímtesztelőnél vannak bonyolultabb függvények is :)
    De ezt is meg lehet oldani egy returnnel.

    Itt egy nagyon naív példa:

    int isPrime(int aNumber)
    {
    int result = 1; // T.F.H. igaz
    int i;
    int max = aNumber / 2;

    for (i = 2; i <= max && result; i++) // kilépünk a ciklusból, ha a feltevés sérül
    {
    result = aNumber % i;
    }

    return result;
    }

    Dehát ez már kapásból nem jó, ha 0-t vagy 1-et adsz be a függvénynek, hiszen ezekre is azt fogja mondani a függvény, hogy prím, és nem tételezheted fel, hogy nem fog a felhasználó beadni 0-t vagy 1-et... És ugye a 0 vagy az 1 nagyon nem prímszám...
    Pontosan ezen csodálkoztam a Prog honlapján fenn lévő MINTAmegoldásoknál, hogy rossz a prímtesztelő függvény... ---> [link]
    Itt így csinálták meg a függvényt:
    int prime(int a){
    int i,max=(int)(sqrt(a)+1);
    for(i=2;i<a;i++)if(a%i==0)return 0;
    return 1;
    }

    És ez is rohadtul mindig 1-et fog visszaadni eredményül, ha 0 vagy 1 a számunk... Ja, és még egyet igencsak elbaszarintottak benne: létrehozták a max változót, de sehol sem használják fel... :Y :U
    Tőlünk ugye elvárják a hibátlan megoldásokat, de ők a MINTAként feltett ZH-ban két ilyen üvöltő hibát elkövethetnek. Kicsit gáz.

Új hozzászólás Aktív témák