Esercizio No. 11 Funzioni

Esercizio No. 11 Funzioni

Scrivere un programma che inserito un numero intero, scriva a schermo se il numero è primo o no. Nel caso il numero non sia primo il programma deve stampare la sua fattorizzazione. Ad esempio 12=2*2*3.
Soluzione:


Prima si valuta se il numero è primo tramite la funzione

bool numeroprimo(int n)

All’interno di tale funzione il programma scrive a schermo se il numero è primo o no. Se il numero non è primo viene mandata in esecuzione la funzione

void dec(int n)

che ne stamperà la fattorizzazione.
Nella funzione dec(n) il valore n del numero n viene posto nella variabile temporanea p (p=n) il contatore i viene incrementato da 2 a p/2. 
Se i è un divisore di p, i viene stampato e il successivo valore di p vale p/i. 
Se i è un divisore di p, dopo la sua stampa i viene decrementato (e poi successivamente incrementato). 
Senza questo ultimo accorgimento potremmo non accorgerci che p possa essere più volte divisibile per i. 


#include < iostream >
using namespace std; 
bool numeroprimo(int n){ 
bool p=true; 
for(int i=2;i < n/2;i++) 
    if(n%i==0)p=false; 
       if(p)cout << “numero primo\n”; else cout << “NON primo\n”; 
return p; 

void dec(int n){ 
int p,i; 
bool primo; 
p=n; 
i=2; 
primo=true; 
do{ 
   if(p%i==0){ 
      if(primo==true)cout << i; 
      else cout << “*” << i; 
      p=p/i; i–; 
      primo=false; 

i++; 
}while(i < n/2); }//fine dec 
main(){ 
int n,i,p; 
bool primo=true; 
cout << “ins.num:”;cin >> n; 
primo=numeroprimo(n); 
if(!primo)dec(n); 
}

Commento all'articolo