Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Pegar números primos de uma lista

Olá, preciso separar apenas os numeros primos de uma lista, já fiz a lista mas nao sei como imprimir na tela apenas os numeros primos.

Alguém sabe como posso fazer, ou onde tem algum conteúdo onde posso aprender como fazer ? Desde ja muito obrigada.

Código da minha lista:

public class Program
{
    public static void Main()
    {
        List<Notas> lstNotas = new List<Notas>() {
                new Notas{ Nota = 3},
                new Notas{ Nota = 4},
                new Notas{ Nota = 8},
                new Notas{ Nota = 1},
                new Notas{ Nota = 4},
                new Notas{ Nota = 10},
                new Notas{ Nota = 17},
                new Notas{ Nota = 13},
                new Notas{ Nota = 2},
                new Notas{ Nota = 17},
                new Notas{ Nota = 56},
                new Notas{ Nota = 18},
                new Notas{ Nota = 19},
                new Notas{ Nota = 20},
                new Notas{ Nota = 22},
                new Notas{ Nota = 29},

        };
        Console.WriteLine("A ordem da nota dos alunos:\n");
        foreach (var Notas in lstNotas.OrderBy(x => ToInt32(x.Nota))) WriteLine(Notas.Nota);

        Console.ReadLine();
    }
}
public class Notas
{
    public int Nota;
}
4 respostas

Bom dia Larissa, tudo bom?

Primeiro defina a regra para o número ser primo ou não, depois percorra sua lista fazendo este teste para cada item dela. Creio que este conteúdo lhe possa ser útil (https://educacao.uol.com.br/disciplinas/matematica/numeros-primos-veja-algoritmo-para-encontra-los.htm#:~:text=Um%20n%C3%BAmero%20natural%20%C3%A9%20primo,si%20pr%C3%B3prio%20e%20por%201.)

Espero ter ajudado!

Bom dia André, estou bem obrigada por perguntar e vc como esta ?

Obrigada pelo link, eu consigo separar os números primos quando dado por um usuário assim:

for(int i = 0; i < numero; i++)
{
    if (numero % i == 0)
        divisores++;
}
if (divisores == 2)
    Console.WriteLine("É um numero primo!");
else
    Console.WriteLine("Não é um numero primo");

Porém nao sei como vereficar se é primo ou nao atraves da lista que tenho. tentei fazer assim :

 int numero;
        int divisores = 0; 
        for(int i = 0; i < lstNotas.Count; i++)
        {
            if (numero % == 0)
                divisores++;
        }

Mas da erro

solução!

Larissa, aproveite essa sua lógica de achar se um número é primo em um método, por exemplo:


public bool EhPrimo(int numero)
{
    bool primo = false;
    int divisores = 0;

    for (int i = 1; i <= numero; i++)
    {
        if (numero == 0)// só para não dar erro de divisão por 0.
            continue;
        if (numero % i == 0)
            divisores++;        
    }
    if (divisores == 2)
         primo = true;
    else
        primo = false;

    return primo;
}

Ai é importante você chamar o método EhPrimo para cada item da sua lista, por exemplo:

...

for (int i = 0; i < lstNotas.Count; i++)
    {
        if (EhPrimo(lstNotas[i].Nota)==true)
        {
            Console.WriteLine(lstNotas[i].Nota + " é primo.");
        }
    } 

Espero ter ajudado.

Nossa André, me ajudou demais! Muito obrigada, não estava ligando as coisas de forma certa kkk