10.7 while - silmukka
do-
while - silmukka suoritetaan aina vähintään 1. kerran.
Joskus on tarpeen silmukka, jonka runkoa ei suoriteta yhtään kertaa.
Muutamme edellisen esimerkkimme käyttämään while -
silmukkaa:
while ( ehto ) lause
Muutamme samalla algoritmia siten, että 2:lla jaolliset
käsitellään erikoistapauksena. Näin pääsemme
eroon "inhottavasta" kasvatus- muuttujasta.
c-silm\alkuluk2.c - alkulukutesti while-silmukalla
int pienin_jakaja(int luku)
{
int jakaja=3;
if ( luku < 0 ) luku = - luku;
if ( luku == 2 ) return 1;
if ( (luku % 2) == 0 ) return 2;
while ( jakaja < luku /2 ) {
if ( (luku % jakaja) == 0 ) return jakaja;
jakaja += 2;
}
return 1;
}