Números Mágicos

Olá…
É o meu primeiro post…
Desculpem se eu errar algo…

Minha dúvida é a seguinte…

Eu tenho q fazer um programa com essas descrições:

Um programa que leia do teclado um número inteiro N.
Após a leitura de N, seu programa deve imprimir todos os números mágicos relativos a N.
Isto é, seu programa deve imprimir, no formato indicado no exemplo abaixo, todos os pares de números inteiros positivos n1 e n2 tais que n1/n2 = N.

[b][i]Exemplo A)

A saída abaixo ilustra uma possível execução do programa, em que são digitados quatro números:

Digite um numero inteiro: 1234567890
1234567890 / 1 = 1234567890
2469135780 / 2 = 1234567890
4938271560 / 4 = 1234567890
6172839450 / 5 = 1234567890
8641975230 / 7 = 1234567890
9876543120 / 8 = 1234567890
Gerou 6 pares de numeros

Digite um numero inteiro: -56744
Nao ha numeros magicos

Digite um numero inteiro: 10345678
10345678 / 1 = 10345678
51728390 / 5 = 10345678
951802376 / 92 = 10345678
Gerou 3 pares de numeros

Digite um numero inteiro: 0
Fim de programa
[/i][/b]

Conseguir fazer até a impressão, o problema é que ele tá fazendo impressão de números repetidos, o que é proibido…
Estou tentando relacionar o boolean de baixo com o dif (n1) && dif (n2)…
Dêem uma olhada…

[code] import java.io.;
import java.util.
;
class M0680192 {
public static void main(String[] args) {
Scanner tec = new Scanner(System.in);
long N,n1,n2;
System.out.println(“Olá. Bem vindo ao meu quarto programa!”);
System.out.println("\nNúmeros Mágicos");
System.out.print("\nDigite um número N>0: ");
N = tec.nextLong();
do{
for(n2=1, n1=N; n1<1000; n2++,n1=N*n2)
if (dif(n1)&& dif(n2)){
System.out.println("Os números mágicos são: "+n1+ " e "+n2);
}
}
while (n1<1000);
}
static boolean dif(long n) {
boolean dif = true;
String ns = Long.toString(n);
for(int i = 0, j= 1; i < ns.length(); i++,j++){
for(; j <= (ns.length()-1); j++){
if(ns.charAt(i)!= ns.charAt(j)){
return dif;
}
else
continue;
}
}
return true;
}
}

[/code]

Acho q fiz até uma bagunça…
Como simplificar também??

alguem???

Esse método dif está muito confuso…

Tenta algo assim (não testei mas não deve andar muito longe de estar correcto)

 static boolean dif(long n) {  
             String ns = Long.toString(n);  
             if (ns.length() > 10){
                      return false; // tem mais de 10 digitos, obrigatoriamente tem de haver repetidos 
             }
            
             for(int i = 0, i < ns.length()-1; i++,){  
                 for(j = i + 1 ; j < ns.length(); j++){  
                     if(ns.charAt(i)== ns.charAt(j)){  
                         return false;  //encontrou dígitos iguais
                     }  
                  }  
             }  
             return true;  
     }  

Deu certo…
Vlw mesmo ae…