0votos

numeros amigos en Delphi

por Seba_lujan usando fpc pascal hace 3 años

Declaro 2 funciones una que retorna si la suma de todos los divisores positivos = y (s(x))=y para saber si la suma de divisores da lo mismo como 2 números m y n son amigables si se cumple que: s(n) = m and s(m) = n Digo es amigable si s(x,n) = s(n,x)

Escribir una función que determine si dos números dados son amigos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function sumaDivisoresIgual(x,y:integer): boolean; 
(* devuelve true si s(x) = y *) 
var i,suma,mitad: integer; 
begin 
  i:= 1; 
  mitad:= x div 2; 
  suma:= 0; 
 
  while (i <= mitad) and (suma <= y) do 
  begin 
    if (x mod i = 0) then 
        suma:= suma + i;       
    i:= i + 1; 
  end; 
 
  sumaDivisoresIgual := suma = y;  
end; 
 
function amigables(m,n:integer): boolean; 
begin 
  amigables := sumaDivisoresIgual(m,n) AND sumaDivisoresIgual(n,m); 
end; 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.