pessoal eu fiz este codigo abaixo para mostrar o maior ciclo de tamanho de um numero dentro de um intervalo especificado. São quatro conjuntos de intervalos.
1 10
100 200
201 210
900 1000
a saida esperada era:
20
125
89
174
mas esta com valores duplicatos no terceiro conjunto.
o algoritmo é esse:
import javax.swing.*;
public class Teste008 {
public static void main(String args[]){
// Bloco contendo os intervalos de numeros;
int con[][] = new int[4][1];
// Variaveis para entradas/saidas dos intervalos
String in,out;
// vetores do array e regras;
int x,y,maior = 0,aux = 0,n1 =0,t=0,n2 = 0;
int cp = 0,ci = 0, ct = 0;
// for para colocar valores de entrada;
for(int i=0; i<con.length;i++){
in = JOptionPane.showInputDialog("Digite as entradas dos intervalos");
x = Integer.parseInt(in);
if((x>0)&&(x<1000000)){
con[i][0]=x;
}else{
break;
}
// For para colocar valores de saida;
for(int j=0; j< con[i].length;j++){
out = JOptionPane.showInputDialog("Digite as saidas dos intervalos");
y = Integer.parseInt(out);
if((y>0)&&(y<1000000)){
con[0][j] = y;
}else{
break;
}
for(int r = x; r<=y; r++){
if(r==1)
continue;
n1 = r;
while(n1!=1){
t = n1 % 2;
if(t==0){
n1 /= 2;
cp += 1;
}else{
n1 = ((3 * n1) + 1);
ci += 1;
}
}
ct = cp + ci + 1;
n2 = ct;
if(n2> maior){
aux = n2;
maior = aux;
}
cp = ci = ct = aux = n2 =0;
}
System.out.println(x +" "+ y +" "+ maior);
}
}
System.exit(0);
}
}
alguem sabe o porque disso e qual seria a resolução para isso?
grato