Algoritmo

10 respostas
Jorgeweb

Bom galera,me cadastrei no guj hoje e estou no meu primeiro semestre de faculdade.O professor passou esse exercicio porém eu não sei como fazer,se alguem poder ajudar eu agradeço!

1.Um NUMERO “n” é perfeito se a soma de seus divisores positivos menores que ele
é igual a n.Exemplos:
(a)6 é perfeito pois os divisores positivos menores que 6 são 1 2 e 3 cuja soma é
igual a 6.
(b)28 é perfeito pois os divisores positivos menores que 28 são 1,2,4,7 e 14 cuja
soma é 28.

10 Respostas

abelgomes

faça um esboço do seu algoratimo, quando surgir a duvida vc posta o que já fez e ai a galera te ajuda…da uma googlada ai sobre portugol, logica de programação…

leo.junior

Seja bem vindo Jorgeweb!
Qual é a sua dúvida? Você colocou o exercício! A idéia do fórum é tirar dúvidas e não resolver exercícios!

Abraço!

Tiago.Argolo

Cara… simples. Ache todos os divisores positivos e menores que o número e some-os. Caso a soma dê igual ao número em questão, é um número perfeito.

Bem vindo ao fórum! E … vale ressaltar:

Até mais!

N

Acho que isso deve resolver:

public boolean isPerfectNumber(int number) { int s = 0; for (int i = 1; i <= number / 2; i++) { if (number % i == 0) { s += i; } } return (s == number); }

Exemplo de uso:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { Integer n = Integer.parseInt(jTextField1.getText()); if (isPerfectNumber(n)) { JOptionPane.showMessageDialog(this, String.format("%d é perfeito", n)); } else { JOptionPane.showMessageDialog(this, String.format("%d não é perfeito", n)); } }

abelgomes

parabéns nephestos fez o trabalho do Jorgeweb sem ele precisar escrever uma linha de código…no proximo ele posta somente a pergunta denovo…

Nossos futuros profissionais…

Marky.Vasconcelos

Alias… se não me engano esses são os numeros triangulares.

Um dia criei uma formula para calcula-los mas perdi o papel =/

tauame

abelgomes:
parabéns nephestos fez o trabalho do Jorgeweb sem ele precisar escrever uma linha de código…no proximo ele posta somente a pergunta denovo…

Nossos futuros profissionais…

:evil:
além disso o cara colou o código pronto em java… dificilmente um aluno do 1° semestre vai ter facilidade em entender aquilo…
se fosse dar a resposta pronta na mão dele, então pelo menos escreva em portugol ou de uma forma intuitiva

pedroroxd
Mark_Ameba:
Alias.. se não me engano esses são os numeros triangulares. Um dia criei uma formula para calcula-los mas perdi o papel =/
Uma fórmula? O_o O máximo que consegui foi armazenar os 5 primeiros num vetor:
int x = 0, soma = 0, a = 0, cont = 0;
		int[] perfeito = new int[5];
		boolean flag = true;

		while (flag) {
			if (cont == perfeito.length) {
				flag = false;

				for (cont = 0; cont < perfeito.length; cont++) {
					System.out.println("Perfeito " + (cont + 1) + ": "
							+ perfeito[cont]);
				}
				break;
			}

			for (a = 1; a <= (x/2); a++) {
				if (x%a == 0) {
					soma = soma + a;
				}
			}
			if (soma == x) {
				perfeito[cont] = x;
				cont++;
			}

			soma = 0;
			x++;
		}
Se eu colocar o vetor com 10 posições por exemplo, deve demorar quase 10 hora pra ele fazer o serviço.. Porque usa a recusividade... Mas com uma fórmula, a velocidade do algorítimo não mudaria, pois seria apenas matemática (+, X, / , -) e não teria nenhuma recursividade!

Então, FAZ A FORMULA AE DINOVO! UHAhuauah
Procurei na net e não axei nenhuma fórmula não... Então se vc conseguir, deve conseguir um prêmio nobel, ou uma boa grana em Harvard ou Princeton! hUAhuhaua

Depois dessa tenta resolver P versus NP

Marky.Vasconcelos
pedroroxd:
Mark_Ameba:
Alias.. se não me engano esses são os numeros triangulares. Um dia criei uma formula para calcula-los mas perdi o papel =/
Uma fórmula? O_o O máximo que consegui foi armazenar os 5 primeiros num vetor:
int x = 0, soma = 0, a = 0, cont = 0;
		int[] perfeito = new int[5];
		boolean flag = true;

		while (flag) {
			if (cont == perfeito.length) {
				flag = false;

				for (cont = 0; cont < perfeito.length; cont++) {
					System.out.println("Perfeito " + (cont + 1) + ": "
							+ perfeito[cont]);
				}
				break;
			}

			for (a = 1; a <= (x/2); a++) {
				if (x%a == 0) {
					soma = soma + a;
				}
			}
			if (soma == x) {
				perfeito[cont] = x;
				cont++;
			}

			soma = 0;
			x++;
		}
Se eu colocar o vetor com 10 posições por exemplo, deve demorar quase 10 hora pra ele fazer o serviço.. Porque usa a recusividade... Mas com uma fórmula, a velocidade do algorítimo não mudaria, pois seria apenas matemática (+, X, / , -) e não teria nenhuma recursividade!

Então, FAZ A FORMULA AE DINOVO! UHAhuauah
Procurei na net e não axei nenhuma fórmula não... Então se vc conseguir, deve conseguir um prêmio nobel, ou uma boa grana em Harvard ou Princeton! hUAhuhaua

Depois dessa tenta resolver P versus NP

o.0
Eu criei enquanto estava empilhando caixas quadradas fazendo uma especie de piramide.
Vou ter que fazer denovo então.

Jorgeweb

Aeh Galera!!Já saquei que tenho que postar o codigo antes,como foi meu primeiro post eu nao sabia disso.
Mas,tranquilo se eu tiver alguma erro no meu codigo,eu posto ele!!

Criado 5 de maio de 2010
Ultima resposta 6 de mai. de 2010
Respostas 10
Participantes 8