Disciplinas relacionadas con la matemática => Temas de computación => Mensaje iniciado por: Julio_fmat en 24/10/2017, 03:09:03 am



Título: Número perfecto, magma
Publicado por: Julio_fmat en 24/10/2017, 03:09:03 am
Un número entero positivo [texx]n[/texx] es perfecto si la suma de sus divisores propios es igual con [texx]n[/texx]. Ocupando el comando Magma Divisors(), escriba un programa que entregue los primeros 4 números perfectos.

Bueno, en algún momento usamos el comando Divisors(). Por otro lado, creo que no usamos function, porque no nos piden una funcion... Pero si "IF".


Título: Re: Numero perfecto, magma
Publicado por: sugata en 24/10/2017, 03:15:53 am
La sentencia IF es un bucle que acaba en THEN, habitualmente en otros lenguajes.
Entonces con este bucle podemos determinar si el número es perfecto determinando IF suma de divisores =n THEN el número es cuadrado.
Esto debería ir en otro bucle que cuente los números encontrados y al llegar a 4 pare.


Título: Re: Numero perfecto, magma
Publicado por: Ignacio Larrosa en 24/10/2017, 04:16:43 am
Un número entero positivo [texx]n[/texx] es perfecto si la suma de sus divisores propios es igual con [texx]n[/texx]. Ocupando el comando Magma Divisors(), escriba un programa que entregue los primeros 4 números perfectos.

Bueno, en algún momento usamos el comando Divisors(). Por otro lado, creo que no usamos function, porque no nos piden una funcion... Pero si "IF".

Con Derive, y aplicando tan solo la definición de nýumero perfecto, bastaría con

SELECT(SUM(DIVISORS(n)) = 2·n, n, 1, 10000)

para obtener [texx][6, 28, 496, 8128][/texx].

La función DIVISORS(n) obtiene la lista de todos los divisores positivos de [texx]n[/texx], incluidos [texx]1\textrm{ y }n[/texx].

En Magma debe ser similar.

Saludos,