Pascal/Turbo Pascal - Ayuda programa numeros perfectos

 
Vista:
Imágen de perfil de JeanKH

Ayuda programa numeros perfectos

Publicado por JeanKH (13 intervenciones) el 16/06/2016 23:34:00
Me asignaron realizar el siguiente programa:

Un número perfecto es aquel que es igual a la suma de todos sus divisores excepto el mismo. El primer número perfecto es seis (6) ya que 1+2+3=6. Escriba un programa que muestre todos los números perfectos menores que mil.

Pero no puedo utilizar el ciclo "for" solo "repeat o while" y he intentado plantearlo pero no consigo que me de los numero que me piden, quisiera que me pudieran ayudar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda programa numeros perfectos

Publicado por David (224 intervenciones) el 17/06/2016 00:00:23
Te propongo la siguiente solución:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Uses crt;
 
var
  k ,n      : byte;
  i,num,sum : word;
 
begin
  clrscr;
  num:= 0;
  k:=0;
  Writeln('Ingrese la cantidad de numeros perfectos que desea conocer');
  Readln(n);
  while k < n do begin
    inc(num,2);
  sum:= 0;
  for i:= 1 to num div 2 do
   if num mod i = 0 then
     inc(sum,i);
  if sum = num then
    begin
      inc(k);
      writeln(k,'º nro. perfecto: ',num:3)
    end;
end;
readln
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JeanKH

Ayuda programa numeros perfectos

Publicado por JeanKH (13 intervenciones) el 17/06/2016 00:08:24
Esta muy bien, pero no tengo permitido usar el ciclo "For" solo "while" o "Repeat", de que forma podría aplicarlos en ese caso?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda programa numeros perfectos

Publicado por David (224 intervenciones) el 17/06/2016 20:08:42
Perdón, se me pasó eso. Aquí lo tienes corregido


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Uses crt;
 
var
 
  k ,n      : byte;
 
  i,num,sum : word;
  aux:integer;
 
 
begin
 
  clrscr;
 
  num:= 0;
 
  k:=0;
 
  Writeln('Ingrese la cantidad de numeros perfectos que desea conocer');
 
  Readln(n);
 
  while k < n do begin
 
    inc(num,2);
 
  sum:= 0;
 
  aux:=num div 2;
 i:=1;
 while i<=aux  do
  begin
   if (num mod i) = 0 then
 
     inc(sum,i);
     I:=i+1;
   end;
  if sum = num then
 
    begin
 
      inc(k);
 
      writeln(k,'º nro. perfecto: ',num:3)
 
    end;
 
end;
 
readln
 
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar