57 lines
1.6 KiB
Text
57 lines
1.6 KiB
Text
Declare Function SumaDivisores(n As Integer) As Integer
|
|
|
|
Dim numimpar As Integer = 1
|
|
Dim contar As Integer = 0
|
|
Dim sumaDiv As Integer = 0
|
|
|
|
Function SumaDivisores(n As Integer) As Integer
|
|
' Devuelve la suma de los divisores propios de n
|
|
Dim suma As Integer = 1
|
|
Dim As Integer d, otroD
|
|
|
|
For d = 2 To Cint(Sqr(n))
|
|
If n Mod 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:"
|
|
Do While contar < 25
|
|
sumaDiv = SumaDivisores(numimpar)
|
|
If sumaDiv > numimpar Then
|
|
contar += 1
|
|
Print using "######"; numimpar;
|
|
Print " suma divisoria adecuada: " & sumaDiv
|
|
End If
|
|
numimpar += 2
|
|
Loop
|
|
|
|
' 1000er número impar abundante
|
|
Do While contar < 1000
|
|
sumaDiv = SumaDivisores(numimpar)
|
|
If sumaDiv > numimpar Then contar += 1
|
|
numimpar += 2
|
|
Loop
|
|
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
|
|
Dim encontrado As Boolean = False
|
|
Do 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
|
|
Loop
|
|
End
|