/* File: primi.c */ /* Time-stamp: "2001-03-12 13:05:27 calvanes" */ /* Scopo: cicli indefiniti */ #include <stdio.h> /* Legge un intero positivo da tastiera e stampa il piu` piccolo divisore minore del numero, se questo esiste, un messaggio che il numero e` primo, altrimenti. Il procedimento consiste nel cercare di dimostrare che il numero non e' primo andando a cercare un divisore. Algoritmo: verifica se N e` primo e stampa il piu` piccolo divisore divisore = 2; (e` il primo valore provato come possibile divisore) trovato = falso; (inizialmente non abbiamo trovato alcun divisore) fino a che divisore < N e non abbiamo trovato un divisore ripeti incrementa il divisore di 1 se divisore divide N allora poni trovato a vero (fa interrompere il ciclo) se trovato allora stampa il divisore altrimenti stampa che il numero non e` primo */ int main(void) { int n, divisore; int trovato = 0; /* booleana: indica se e` stato trovato un divisore */ printf("Numero? "); scanf("%d", &n); divisore = 2; while ((divisore < n) && !trovato) { if ((n % divisore) == 0) trovato = 1; else divisore++; } printf("Il numero %d ", n); if (trovato) printf ("non e` primo. E` divisibile per %d.\n", divisore); else printf ("e` primo.\n"); return 0; }