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??