Ir ao conteúdo
  • Cadastre-se
gcbL

Programa em pascal sobre números perfeitos

Recommended Posts

Olá, preciso de ajuda com um exercício em pascal! 

Ex:Faça um programa em Pascal que gere um vetor com os três primeiros números
perfeitos. Sabe-se que um número é perfeito quando é igual à soma de seus
divisores (exceto ele mesmo).

 

Program num_perfeitos;
var v:array[1..3] of integer;
        i,j,num,soma:integer;
Begin
soma:=0;
    for j:=1 to 3 do 
    begin
            for num:=1 to 500 do
            begin
                for i:=1 to num-1 do
                begin
                    if (num mod i =0) then
                    soma:=soma+i;
                end;
            end;
                if (soma=num) then
                v[j]:=num;
    end;
            for j:=1 to 3 do
            write(v[j],' ');
            readln;
  End.

 

Desenvolvi esse porém não da certo, o cálculo dá zero. Alguém pode me ajudar?

EDIT!!!

Consegui resolver!!! 

 

 

Editado por gcbL
Ao postar um código, use o botão CODE <>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @gcbL,

 

Por favor, poste o seu código para podermos, caso necessário, dá uma revisada e também poder servi de base para futuros visitantes.

 

 

 

PS: à título de curiosidade/informação, as estruturas if e for só precisam de begin/end quando possuem mais de umas instrução vinculada a eles. Como demonstrado abaixo, apenas o primeiro for precisaria do begin/end.

PS2: de certo modo não tem problema deixar os begin/end, apenas estou tentando demonstrar que são facultativos

Program num_perfeitos;
var v:array[1..3] of integer;
        i,j,num,soma:integer;
Begin
soma:=0;
for j:=1 to 3 do //esse for precisa de begin/end, pois tem um for e um if dentro (duas estruturas)
  begin 
  for num:=1 to 500 do //esse for não precisa, pois só tem um comanando (o for) dentro dele
    for i:=1 to num-1 do //esse for não precisa, pois só tem um comando (o if) dentro dele
      if (num mod i =0) then //esse if não precisa, pois só tem um comanado (a soma/atribuição) dentro dele
        soma:=soma+i;
  if (soma=num) then //esse if não precisa, pois só tem um comanado (a atribuição) dentro dele
    v[j]:=num;
  end;
for j:=1 to 3 do
  write(v[j],' ');
readln;
End.

 

No aguardo.
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×