Essendo al terzo anno di un istituto tecnico per periti informatici, mi stavo allenando nell'uso dei cicli. Il testo richiede:
Dato un numero stampare a video tutti i suoi divisori.
Una soluzione l'ho già fatta e funzionante:
- Codice: Seleziona tutto
#include <stdio.h> /*Consente l'uso di printf e scanf*/
#include <conio.h> /*Consente l'uso di getch*/
void tasto (void){
getch();
}/*Funzione tasto*/
void nl (void){
printf("\n");
}/*nl*/
void autore (void){
int i;
for (i=0;i<40;i++)
printf(" ");
printf("||:-->By Monkey<<--:||");
}/*autore*/
int leggi (const char*st){
int n;
printf("%s", st);
scanf ("%d", &n);
return n;
} /*Funzione leggi*/
/*
IP: n numero NUM_N+
OV: Tutti i divisori di n
*/
void Divisori_n (int n){
int p;
p=0;
while (p<=n/2){
p++;
while (n%p==0)
printf("%d ",p++);
}/*while*/
}/*Divisori_n*/
int main (void){
int n;
nl();
printf("Il programma mostrera' i divisori di un numero scelto\n");
nl();
n=leggi("Inserire il numero da analizzare : ");
nl();
printf("I divisori sono : \n");
nl();
Divisori_n(n);
nl();
autore();
tasto();
}/*main*/
Come potete notare ho usato i cicli annidati, ma preferirei non usarli. Ho tentato di esprimere la formula con una condizioni booleana con AND (&&), ma non mi da il risultato che voglio. Come posso migliorare la funzione "Divisori_n"? Grazie ciao!
![Rolleyes [rolleyes]](http://www.megalab.it/forum/images/smilies/rolleyes.gif)