Ir para conteúdo
Fórum CódigoFonte.net

thiago.r

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

  1. thiago.r

    Tradução Python x Java

    Olá bom tenho um código de um programa em python para resolver a seguinte questão: 3- Qual é o primeiro número triangular que possui mais de 500 divisores? A seqüência dos números triangulares é gerada somando-se os números naturais. Assim, o sétimo número triangular é 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. Os dez primeiros termos são: 1, 3, 6, 10, 15, 28, 36, 45, 55, ... Segue o código : """ Exercicio 3 Qual e o primeiro numero triangular que possui mais de 500 divisores? Autor: Thiago R. Engel """ class Exercicio3: """ Terceiro Exercicio da Lista 2. """ def __init__(self, limite): """ Instancie um objeto passando um limite de divisores. """ i = 0 soma = 0 divisores = 1 while divisores < limite: i += 1 soma += i if soma > 2: divisores = self.__numeroDivisores(self.__getAtomos(soma)) # Atributo de objeto para armazenamento do resultado self.resultado = soma def getResultado(self): """ Retorna o resultado da operacao """ return self.resultado def __crivo(self, valor): """ Crivo de Eratostenes Cria-se uma lista e por eliminicao descreve-se quem e primo ou nao. """ limite = valor + 1 primos = [True] * limite retorno = [] for i in range(2, limite): if primos: for j in range(i * i, limite, i): primos[j] = False # Monta a lista de retorno somente com os primos do numero limite for i in range(2, limite): if primos: retorno.append(i) return retorno def __getAtomos(self, valor): """ Pegar Atomos Decompoe-se o valor de acordo com seus primos e recolhe-se os atomos. """ primos = self.__crivo(valor) atomos = [] while valor > 1: for i in primos: if valor == 1: break if valor % i == 0: atomos.append(i) valor = valor / i break # Ordena ascendente atomos.sort() return atomos def __numeroDivisores(self, atomos): """ Numero de Divisores Atraves dos atomos de um numero e possivel saber sua quantidade de divisores. """ numeros = [1, ] ant = 0 for atomo in atomos: if atomo != ant: tmp = [] tmp.extend(numeros) for numero in tmp: numeros.append(atomo * numero) else: numeros.append(atomo * numeros[-1]) Não tenho muito conhecimento em java gostária que alguem pudesse me ajudar estou um pouco perdido. desde já agradeço !!
×
×
  • Criar Novo...