Algoritimo complicado

Ainda to penando aki gente, estacionei e não consigo sair desse lugar!

Meu algoritimo hoje:

package Teste;
public class Teste {

    public int somaMen(int i){
       return ((i+1)*i)/2;
    }
    
    public int somaMai(int i, int j){
        int maiores =0;
        for(int g = i+1; g>i && g<j; g++){
            maiores += g;
        }
        return maiores;
    }

    public String confeitaria(){
        StringBuilder sb = new StringBuilder();
        for(int tamRua = 0; tamRua < 400000000; tamRua++){
            for(int i = 0; i < tamRua; i++){
                for(int j = i; ;j++){
                    if(somaMen(i) == somaMai(j,tamRua))
                        sb.append(j);
                }
            }
        }
        return sb.toString();
    }

    public static void main (String[] args){
        Teste t = new Teste();
        t.confeitaria();
        //System.out.println(t.somaMen(5));
    }
}

ainda ta estourando a memoria, Vocês tem alguma ideia de como fazer isso com inteiros (int) de 32 bits?

Acho que o primeiro passo é colocar o metodo somaMai() em uma formula matematica certo?

Se puderem me ajudar eu agradeço muito!

Galera andei trabalhando um pouco nesse algoritimo, mas soh consegui isso:

package Teste;
public class Teste {

    public int somaMen(int i){
       return ((i+1)*i)/2;
    }
    
    public int somaMai(int i, int j){
        return (1+1)*(j-i);
//        int maiores =0;
//        for(int g = i; g<=j; g++){
//            maiores += g;
//        }
//        return maiores;
    }

    public String confeitaria(){
        StringBuilder sb = new StringBuilder();
        for(int tamRua = 0; tamRua < 400000000; tamRua++){
            for(int i = 0; i < tamRua; i++){
                for(int j = i; ;j++){
                    if(somaMen(i) == somaMai(j,tamRua))
                        sb.append(j);
                }
            }
        }
        return sb.toString();
    }

    public static void main (String[] args){
        Teste t = new Teste();
       // t.confeitaria();
        System.out.println(t.somaMen(6));
        System.out.println(t.somaMai(6,8));
    }
}

Galera meu problema ta no segundo metodo, não consigo achar uma formula matematica pra ele, to enlouquecendo com isso!

ah mais uma duvidasinha!

Tipo o metodo "confeitaria()" deve percorrer o laço pegando cada proximo numero e vendo se a soma de todos numeros anteriores é igual a soma de todos proximos numeros (que deve ser o tamanho do laço atual, onde especifico com o tamRua) Isso ta funcionando? tem algum bug?

Poderiam dar uma olhadinha?
Brigadão mesmo!
PS.: o metodo somaMai(int, int) soh funciona com o laço