M.D.C + loop

pessoal eu to fazendo um programa que pega os numeros primos de um determinado numero e depois fatora ele.
Eu to quase lá. começou a aparecer os numeros de teste . mas alguns numeros a mais estão mostrando.

Exemplo:
n = 13195

29,13,7,5

aqui no meu codigo a parece mais alguns…

public static void primo(long n){
		long primo =0;
		long fact=0;
		for(long i=2; i<=n; i++){
			
			primo = n % i;
			if(primo==0){
			  fact =	n / i;
			  System.out.println(fact);
				
			}
		}
		
	}

O que preciso a mais para corrigir este problema?
grato.

o problema é matemático.

public static void primo(long n){ // aqui o laço deveria ser de 2 até a raiz quadrada de n! for(long i=2; i<=n ; i++){ if(n % i ==0){ System.out.println(i); primo(n/i); // percebeu a malandragem ? break; } } }