Stampare tutti i divisori di un numero dato in input

Esercizio semplice e classico per chi inizia a programmare. Dato un numero intero in ingresso maggiore di zero, stampare a video tutti i suoi divisori. Vediamo come realizzarlo con algoritmo e codice C++.

L’algoritmo è molto semplice e ricalca analogo problema visto sul singolo divisore di un dato numero. La prima accortezza, magari non obbligatoria ai fini dello specifico dell’esercizio, è leggere un numero intero. Scegliamo un nome di variabile n e creiamo un ciclo con condizione finale per verificare che l’immissione del dato rispetti i valori consentiti maggiori di zero, altrimenti il ciclo chiede una nuova immissione. Passaggio successivo è crearci i divisori del nostro n e quale miglior modo se non di usare un loop del tipo for in cui conosciamo il numero finito di passaggi/giri e lo step incrementale di uno in uno. Nel ciclo basterà verificare se la i che fa da contatore del ciclo è un divisore con la classica funzione resto % mod e procedere a stampare se tale resto è zero. La astuzia è ciclare non da 1 fino a n, ma da 1 a n/2, porzione di numeri tra i quali può esserci un divisore.

Il codice risultante è piuttosto semplice:

#include <iostream>

using namespace std;

int main() 
{

  int n;

  do 
  {
    cout << "Inserisci il numero n ";
    cin >> n;
  }  
  while(n <= 0);

  cout << "I divisori sono:"<< endl;
  for (int i=1; i <= n/2; i++)
  {
    if (n % i == 0)
    {
      cout << i << endl;
    }  
  }  
    
  return 0;
}

Ultima modifica 19 Gennaio 2022