# Tema 16: Aritmética
(Ejercicios resueltos)

## Divisores y división euclídea

Ejercicio 1.1. Asignarle a la variable a el valor 16800 y a la variable
b el valor -990.

a:16800$ b:-990$

Ejercicio 1.2. Calcular el conjunto de los divisores positivos de b.

divisors(b);

Ejercicio 1.3. Calcular la suma de los divisores de b.

divsum(b);

Ejercicio 1.4. Calcular el cociente y el resto de la división euclídea 
de a entre b.

divide(a,b);

Ejercicio 1.5. Asignarle a las variables q y r el cociente y el resto 
de la división euclídea de a entre b. 

[q,r]:%;

Ejercicio 1.6. Compobar, usando is, que el dividendo (a) es igual al
divisor (b) por el cociente (q) más el resto (r).

is(a=b*q+r);

Ejercicio 1.7. Calcular el resto de dividir 17 entre 5.

mod(17,5);

## Máximo común divisor y mínimo común múltiplo

Ejercicio 2.1. Calcular el máximo común divisor de a y b.

gcd(a,b) ;

Ejercicio 2.2. Calcular el mínimo común múltiplo de a y b.

lcm(a,b);

## Números primos

Ejercicio 3.1. Comprobar si los números 101 y 1001 son primos. 

primep(101);

primep(1001);

Ejercicio 3.2. Calcular el mayor primo menor que 1001.

prev_prime(1001) ;

Ejercicio 3.3. Calcular el menor primo mayor que 1001.

next_prime(1001);

Ejercicio 3.4. Descomponer 2520 en factores primos.

factor(2520) ;

Ejercicio 3.5. Calcular la descomposición de 2520 en factores primos.

ifactors(2520) ;

Ejercicio 3.6. Descomponer 2^67-1 en factores primos.

factor(2^67-1);

## Programación básica

Ejercicio 4.1. Escribir un programa para calcular la descomposición en 
factores primos de los números 100, 105, ..., 125. 

for i from 100 step 5 thru 125 do (print(i,"=",factor(i)));

Ejercicio 4.2. Un número entero n es perfecto si la suma de sus 
divisores positivos distintos de n es igual a n.

Escribir un programa que calcule los números perfectos menores que 500.

for k from 1 thru 500 do
(if k=divsum(k)-k 
 then print(k, "es perfecto"))$