# Tema CS3. Aritmética
(Soluciones de ejercicios propuestos)

## Ejercicio 1

Ejercicio 1.1. Asignarle a la variable a el valor 2460 y a la b el 3030.

a:2460$ b:3030$

Ejercicio 1.2. Calcular el conjunto D1 de los divisores positivos de a.

D1:divisors(a);

Ejercicio 1.3. Calcular el conjunto D2 de los divisores positivos de b.

D2:divisors(b);

Ejercicio 1.4. Calcular, usando la función intersection, el conjunto D de 
los divisores comunes de a y b.

D:intersection(D1,D2);

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

gcd(a,b);

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

lcm(a,b);

## Ejercicio 2

Ejercicio 2.1. Asignarle a la variable n el valor 2008!

n:2008!;

Ejercicio 2.2. ¿Cuántas cifras tiene n en base 10?

bfloat(n);

Por tanto, tiene 5762 cifras.

Ejercicio 2.3. Calcular la descomposición de n en productos de factores 
primos.

ifactors(n);

Ejercicio 2.4. ¿Con cuántos ceros termina n? 

Puesto que el exponente de 5 en la descomposición anterior es 500, n termina
con 500 ceros. En efecto,

n/10^500;

n/10^499;

## Ejercicio 3

Ejercicio 3. Escribir un programa para asignarle a la variable sol3 el 
término que ocupa la posición 2008 en la sucesión de números primos 
ordenados de manera creciente.

sol3:2$
for i:2 thru 2008 do sol3:next_prime(sol3)$
sol3;

## Ejercicio 4

Ejercicio 4. Escribir un programa para asignarle a la variable sol4 el
número de primos inferiores a 100000.

sol4:0$
for i:2 thru 100000 do (if primep(i) then sol4: sol4+1 else sol4)$
sol4;

## Ejercicio 5

Ejercicio 5. Escribir un programa para asignarle a la variable sol5 el 
término que ocupa la posición 9592 en la sucesión de números primos 
ordenados de manera creciente. 

sol5:2$
for i:2 thru 9592 do sol5:next_prime(sol5)$
sol5;

Ejercicio 5.2. Comprobar si sol5 es el mayor primo menor que 100000.

is(sol5=prev_prime(100000));