C# - Verificando se um número é primo
Hoje veremos algumas abordagens que podemos usar para verificar se um número é primo usando a linguagem C#. |
Um inteiro maior do que 1 é chamado de número primo se seus únicos divisores positivos (fatores) forem o número 1 e ele mesmo.
Por exemplo, os divisores primos de 10 são 2 e 5; e os primeiros seis números primos são 2, 3, 5, 7, 11 e 13. O número 1 não é primo e o número 2 é o único número primo par.
Assim, se n (n > 1) é um número inteiro.
Dizemos que:
Para testar se um dado número é primo podemos usar um código bem simples como o abaixo onde usamos um laço for/next :
Console.WriteLine("###
Verificando se um número é primo ###\n");
while(true)
if (numero == 99999)
if (numero < 2 || numero > 99998) bool VerificaNumeroPrimo(int
numero) |
Abaixo temos o projeto em execução :
Usando LINQ podemos otimizar o código e obter o mesmo resultado, para isso basta criar o método VerificaNumeroPrimoLINQ(int numero) com o código a seguir:
bool
VerificaNumeroPrimoLINQ(int numero) { bool ePrimo = Enumerable.Range(2, (int)Math.Sqrt(numero) - 1) .All(divisor => numero % divisor != 0); return ePrimo; } |
Usando outra abordagem
Aqui está um código alternativo e mais enxuto para verificar se um número é primo em C#:
public static bool IsPrime(int
numero) { if (numero <= 1) { return false; } for (int i = 2; i <= Math.Sqrt(numero); i++) { if (numero % i == 0) { return false; } } return true; } |
Este código também é robusto porque verifica se o número é menor ou igual a 1. Se o número for menor ou igual a 1, ele não é primo.
Você pode usar este código para verificar se qualquer número é primo. Por exemplo, para verificar se o número 13 é primo, você pode usar o seguinte código:
bool
isPrime = IsPrime(13);
Implementando o Crivo de Eratóstenes
Outra abordagem é implementar o algoritmo de Crivo de Eratóstenes, que é um método eficiente para encontrar todos os números primos até um determinado valor.
using System; class Program { static void Main() {
// Altere o número que deseja verificar aqui |
Essa implementação é robusta e otimizada para verificar se um número é primo.
Ela evita iterações desnecessárias e é eficiente mesmo para números grandes. No entanto, é importante observar que a eficiência do algoritmo de Crivo de Eratóstenes diminui para números muito grandes, e nesses casos, podem ser necessários métodos mais avançados de teste de primalidade, como o teste de Miller-Rabin.
Pegue o projeto aqui: CSharp_NumerosPrimos.zip
E estamos conversados.
"Ainda que eu
fale as línguas dos homens e dos anjos, se não tiver amor, serei como o sino que
ressoa ou como o prato que retine."
I Coríntios 13:1
Referências: