3
respostas

Programa básico de números primos, usando as tags WHILE e IF, como resolver?

Estou tentando criar um programa básico para mostrar todos os números primos de 1 a 81, como uma forma de exercitar o que aprendi de while e if, contudo, apesar de inúmeras tentativas, estou apanhando um pouco, alguém tem alguma ideia? Segue o código:

<meta charset="UTF-8">

<script>

    function pulalinha() {

        document.write("<br>");
        document.write("<br>");
    }

    function texto(frase) {

        document.write(frase);
        pulalinha();
    }

    var numeroPrimoInicial = 1

    while(numeroPrimoInicial <= 81) {

        if(numeroPrimoInicial / numeroPrimoInicial) {
            texto("Esse numero é primo " + numeroPrimoInicial);
            numeroPrimoInicial = numeroPrimoInicial + 1
    }

    }

    texto("FIM")

</script>
3 respostas

Boa noite! Como vai?

Antes de mais nada, vc deve começar pela definição de um número primo!

Um número primo é aquele que é divisível apenas por 1 e por ele mesmo.

Sabendo disso, resolvendo de forma simplista esse problema, vc precisará de um laço de repetição para iterar de 1 até 81 ( valor limite definido por vc ), dentro desse primeiro laço vc precisará de um segundo laço de repetição que irá iterar de 1 até o número atual do laço externo e verificará a condição de primalidade! Ficará mais ou menos assim o rascunho do código:

while(...) { // iteração de 1 até 81.
     while(...)  { // iteração de 1 até o número atual do laço externo.
          if (condição de primalidade) {
               // mostra o número primo.
          } else {
               break;
          }
     }
}

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos!

Desculpe, mas não entendi,Sobre o while:

  • Não seria só mandar ele repetir de 1 e depois +1, obedecendo a condição?
  • e o porque do segundo while?

Sobre a condição de primalidade:

if(numeroPrimoInicial / numeroPrimoInicial || numeroPrimoInicial / 1 )

////traduzindo: se o numeroPrimoInicial  é dividido ( "/") por numeroPrimoInicial (ele mesmo), ou numeroPrimoInicial / por 1

//Tecnicamente poderia ser tambem: if(numeroPrimoInicial / numeroPrimoInicial)
///Já que todo o numero (com exceção do zero) é dividido por 1

/////Tentei seguir a ideia:

<meta charset="UTF-8">

<script>

    function pulalinha() {

        document.write("<br>");
        document.write("<br>");
    }

    function texto(frase) {

        document.write(frase);
        pulalinha();
    }

    var limite = parseInt(prompt("Até que numero você quer ver os numeros primos?"))

    var numeroPrimoInicial = 1


    while(numeroPrimoInicial <= limite){

        while(numeroPrimoInicial = numeroPrimoInicial + 1){

             if(numeroPrimoInicial / numeroPrimoInicial == 1){

                texto("Esse numero é primo " + numeroPrimoInicial)
    }else{ break;

    }

        }


            }

    texto("FIM")

</script>

Desde já agradeço ;)

Boa tarde!

Veja como eu faria o código. Criei uma função só para verificar se o número é primo e chamo ela no código principal.

<meta charset="UTF-8">

<script>

    function isNumeroPrimo(numero) {
        if (numero < 2) {
            return false;
        }
        for (let divisor = numero - 1; divisor >= 2; divisor--) {

            let resto = numero % divisor;
            if ((resto) == 0) {
                return false;
            }
        }
        return true;
    }

    function pulalinha() {

        document.write("<br>");
        document.write("<br>");
    }

    function texto(frase) {

        document.write(frase);
        pulalinha();
    }

    var numeroPrimoInicial = 1

    while (numeroPrimoInicial <= 81) {

        if (isNumeroPrimo(numeroPrimoInicial)) {
            texto("Esse numero é primo " + numeroPrimoInicial);

        }
        numeroPrimoInicial = numeroPrimoInicial + 1
    }

    texto("FIM")

</script>

Espero ter ajudado!!1