import java.util.Scanner; /* Dato un naturale n, produce la sua scomposizione in fattori primi, * stampando n = p1 * p2 * p3 * p4 * .... * pk * dove ciascun divisore puo' essere ripetuto piu' volte * Es.: 700 = 2 * 2 * 5 * 5 * 7 * Questa versione e' particolarmente semplice, e non applica nessun metodo di miglioramento * dell'efficienza */ public class Fattorizza { public static void main(String[] args) { long numero; long residuoDaFattorizzare; long divisore; Scanner lettore = new Scanner(System.in); System.out.print("Quale intero vuoi fattorizzare? "); numero = lettore.nextLong(); System.out.print(numero + " ="); divisore = 2; residuoDaFattorizzare = numero; while(residuoDaFattorizzare > 1) // continua se la fattorizzazione non e' completa { while(residuoDaFattorizzare % divisore == 0) // ciascun divisore potrebbe essere applicato piu' volte { // sicuramente ho trovato un divisore if(residuoDaFattorizzare == numero) // in questo caso si tratta del primo fattore System.out.print(" " + divisore); // stampo senza il simbolo di moltiplicazione else System.out.print(" * " + divisore); // stampo premettendo il simbolo di moltiplicazione residuoDaFattorizzare = residuoDaFattorizzare / divisore; } // ho esaurito l'applicazione del divisore divisore++; } System.out.println(); } }