I dette eksempel lærer du at udskrive alle primtal mellem to tal indtastet af brugeren.
For at forstå dette eksempel skal du have kendskab til følgende C-programmeringsemner:
- C hvis… ellers Erklæring
- C for Loop
- C bryde og fortsætte
Vis primtal mellem to intervaller
#include int main() ( int low, high, i, flag; printf("Enter two numbers(intervals): "); scanf("%d %d", &low, &high); printf("Prime numbers between %d and %d are: ", low, high); // iteration until low is not equal to high while (low < high) ( flag = 0; // ignore numbers less than 2 if (low <= 1) ( ++low; continue; ) // if low is a non-prime number, flag will be 1 for (i = 2; i <= low / 2; ++i) ( if (low % i == 0) ( flag = 1; break; ) ) if (flag == 0) printf("%d ", low); // to check prime for the next number // increase low by 1 ++low; ) return 0; )
Produktion
Indtast to tal (intervaller): 20 50 Primtal mellem 20 og 50 er: 23 29 31 37 41 43 47
I dette program while
gentages sløjfen ( high-low-1
) gange.
I hver iteration kontrolleres, om der low
er et primtal eller ej, og værdien af low
øges med 1
indtil low
er lig med high
.
Besøg denne side for at lære mere om, hvordan du kontrollerer, om et tal er prime eller ej.
Hvis brugeren først indtaster det større nummer, fungerer ovenstående program ikke som beregnet. Du kan løse dette problem ved at bytte numrene.
Vis primtal, når der indtastes større nummer først
#include int main() ( int low, high, i, flag, temp; printf("Enter two numbers(intervals): "); scanf("%d %d", &low, &high); // swap numbers if low is greather than high if (low> high) ( temp = low; low = high; high = temp; ) printf("Prime numbers between %d and %d are: ", low, high); while (low < high) ( flag = 0; // ignore numbers less than 2 if (low <= 1) ( ++low; continue; ) for (i = 2; i <= low / 2; ++i) ( if (low % i == 0) ( flag = 1; break; ) ) if (flag == 0) printf("%d ", low); ++low; ) return 0; )
Besøg denne side for at lære, hvordan du kan vise alle primtal mellem de to intervaller ved at oprette en brugerdefineret funktion