53 lines
1.2 KiB
Text
53 lines
1.2 KiB
Text
numimpar = 1
|
|
contar = 0
|
|
sumaDiv = 0
|
|
|
|
function SumaDivisores(n)
|
|
# Devuelve la suma de los divisores propios de n
|
|
suma = 1
|
|
i = int(sqr(n))
|
|
|
|
for d = 2 to i
|
|
if n % d = 0 then
|
|
suma += d
|
|
otroD = n \ d
|
|
if otroD <> d Then suma += otroD
|
|
end if
|
|
Next d
|
|
Return suma
|
|
End Function
|
|
|
|
# Encontrar los números requeridos por la tarea:
|
|
# primeros 25 números abundantes impares
|
|
Print "Los primeros 25 números impares abundantes:"
|
|
While contar < 25
|
|
sumaDiv = SumaDivisores(numimpar)
|
|
If sumaDiv > numimpar Then
|
|
contar += 1
|
|
Print numimpar & " suma divisoria adecuada: " & sumaDiv
|
|
End If
|
|
numimpar += 2
|
|
End While
|
|
|
|
# 1000er número impar abundante
|
|
While contar < 1000
|
|
sumaDiv = SumaDivisores(numimpar)
|
|
If sumaDiv > numimpar Then contar += 1
|
|
numimpar += 2
|
|
End While
|
|
Print Chr(10) & "1000º número impar abundante:"
|
|
Print " " & (numimpar - 2) & " suma divisoria adecuada: " & sumaDiv
|
|
|
|
# primer número impar abundante > mil millones (millardo)
|
|
numimpar = 1000000001
|
|
encontrado = False
|
|
While Not encontrado
|
|
sumaDiv = SumaDivisores(numimpar)
|
|
If sumaDiv > numimpar Then
|
|
encontrado = True
|
|
Print Chr(10) & "Primer número impar abundante > 1 000 000 000:"
|
|
Print " " & numimpar & " suma divisoria adecuada: " & sumaDiv
|
|
End If
|
|
numimpar += 2
|
|
End While
|
|
End
|