/****************************************************************************** Scomposizione in fattori primi di un numero intero: viene richiesto un numero intero in input il programma trova i divisori e conta quante volte essi compaiono nella scomposizione *******************************************************************************/ #include #include #include using namespace std; int conta_espo(int N, int D){ long contatore, resto; contatore=0; resto=N%D; while(resto==0){ contatore++; // oppure contatore=contatore+1 N=N/D; resto=N%D; } return(contatore); } int main() { long N, nesp, divisore; printf("Scomposizione in fattori primi di un numero intero\n"); do{ printf("inserisci un numero intero positivo "); cin>>N; }while(N<=0); nesp=conta_espo(N, 2); if(nesp>0){ printf("2 compare %ld volte\n", nesp); N=N/pow(2,nesp); } divisore=3; while(divisore<=sqrt(N)){ nesp=conta_espo(N, divisore); if(nesp>0){ printf("%ld compare %ld volte\n", divisore, nesp); N=N/pow(divisore,nesp); } divisore=divisore+2; } if (N!=1){ printf("%ld compare una volta\n",N); } return 0; }