Pantalla de Diseño

Pantalla de Diseño
Pantalla en Tiempo de Diseño

Pantalla en Tiempo de Ejecución

Pantalla en Tiempo de Ejecución
Programa en Ejecución

viernes, 11 de mayo de 2007

Evaluador de Números Primos en Visual Basic 2005

Este programa permite determinar si un número es primo o no. Está creado en Visual Basic 2005. El código y las pantallas de ejecución se muestran a continuación:

Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Recuérdese que el textBox1 es para introducir el número que se quiere saber si es primo o no y que el textBox2 es donde se imprime el resultado dando a conocer si el número es primo o no luego de hacer las evaluaciones respectivas.
Dim residuo As Double 'Para almacenar los residuos.
Dim contador As Integer 'Contador para saber cuántas veces se dan residuos de cero.
For i As Integer = 1 To Val(TextBox1.Text) 'Ciclo desde 1 hasta el número a evaluar.
residuo = Val(TextBox1.Text) Mod i 'Saca el residuo que resulta de dividir el número a evaluar con la iteración en la que va el For, de modo que si el número a evaluar fuera el 5, entonces saca el resuduo de 5 con 1 en la iteración 1, 5 con 2 en la iteración 2, 5 con 3 en la iteración 3, 5 con 4 en la iteración 4 y 5 con 5 en la iteración 5. En ese caso residuos exactos de cero solamente van a salir 2, que es 5 Mod 1 y 5 Mod 5. Por lo tanto el número 5 es primo porque el contador llegaría a valer 2. En el caso del 4, sacaría el resuduo de 4 con 1 en la iteración 1, 4 con 2 en la iteración 2, 4 con 3 en la iteración 3 y 4 con 4 en la iteración 4. En este caso residuos exactos de cero van a salir 3, que es 4 Mod 1, 4 Mod 2 y 4 Mod 4. Por lo tanto el contador llegaría a valer 3, siendo entonces mayor que 2, por lo cual se concluye que el 4 no es un número primo.
If residuo = 0 Then
contador += 1 'Equivale a escribir "contador = contador + 1"
End If
Next
If contador <= 2 Then 'Si el contador vale 1 o 2, el número a evaluar es primo. Si el contador vale 3 o más, el número a evaluar no es primo.
TextBox2.Text = "El número introducido es primo."
Else 'Este "else" se da en el caso que el contador valga 3 o más.
TextBox2.Text = "El número introducido no es primo."
End If
End Sub

End Class

Jaime Montoya
jaimemontoya@jaimemontoya.com
www.jaimemontoya.com

6 comentarios:

Anónimo dijo...

hola, quisiera saber como seria el codigo para determinar entre 3 numeros cuales son primos.
que me arroje numero1= no es primo numero2= es primo numero3= es primo. algo como esto. gracias por tu explicacion en este programa.

Jaime Montoya dijo...

Puedes simplemente hacer una función evaluadora de números primos que reciba tres parámetros, que son los números que deseas evaluar. Luego los resultados los muestras en tres objetos TextBox diferentes o en MsgBox si lo prefieres. No te mando el código pero me dices si comprendes la idea y si lo puedes hacer tú mismo.

Jaime Montoya
webmaster@jaimemontoya.com
www.jaimemontoya.com

Anónimo dijo...

hola yo hice uno diferente peor veo que el tuyo es mas eficiente (tiene menos codigo)
quisiera saber como hacer un generador de numeros primos

Anónimo dijo...

Hola Quisiera saber si tu codigo esta bien...

La linea
For i As Integer = 1 To Val(TextBox1.Text)

Dice "Falta ="
Y cuando lo intento poner dice

Se esperaba expresion

¿? Ayuda

Anónimo dijo...

Yo tengo una pregunta...
¿porque a la hora de hacer la condicion entre los residuos de la divicion, se toma el cero? ¿si en realidad ninguna de las diviciones da cero? ¿o es que el programa al haber declarado un numero con decimales y el resultado ser un numero entero, lo combierte en cero? por favor me urge resolver esta duda. y gracias me sirvio mucho tu código

Jaime Montoya dijo...

Porque los números primos pueden ser divisibles entre ellos mismo y la unidad. Si son divisibles dando cero como resíduo, en más números que entre el número que se está evaluando y la unidad, no es número primo. Por eso el contador únicamente puede llegar a dos como máximo.