Números Primos na Matemática
Ou seja, se você dividir ele por outro número que não seja 1 nem ele mesmo, vai dar quebrado.
O 7, por exemplo, só podemos dividir por 1 ou por 7.
O 11 também, só podemos dividir por 1 e ele mesmo.
Exemplo de números primos até 100: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97...
O 4, por exemplo, não é primo. Podemos dividir por 1, por 2 e por 4.
O 6 também não, pois é divisível por 2 e por 3, além de ser divisível por 1 e ele mesmo, o seis.
Testar se o número é primo em JS
Crie um script em JS que diz se um número fornecido pelo usuário é primo ou não.Vamos pedir um número ao usuário e armazenar na variável numero.
Depois, vamos fazer uma variável de contadora, a count, que vai assumir todos os valores de 1 até numero, dentro de um laço FOR.
Vamos usar também uma variável chamada divisores, que é inicializada com 0 e ela vai armazenar a quantidade de divisores do número fornecido pelos usuários.
Cada vez que encontrarmos um divisor (resto da divisão de numero por 1, 2, 3, 4, ...), incrementamos a divisores. Ao final do laço, se ela for igual a 2, é primo.
Se for maior que 2, não é primo.
Código HTML:
<!DOCTYPE html> <html> <head> <title>Apostila JavaScript Progressivo</title> <script type="text/javascript" src="script.js"></script> </head> <body> Número para teste: <input id="num" type="number" /> <br /> <button onclick="primo()">Testar</button><br /> Resultado: <div id="resposta"> </body> </html>script.js:
function primo(){ var numero = parseInt(document.getElementById('num').value); var resposta = document.getElementById('resposta'); var divisores=0; for(var count=1 ; count<=numero ; count++) if(numero % count == 0) divisores++; if(divisores==2) resposta.innerHTML='É primo'; else resposta.innerHTML='Não é primo'; }
Resultado:
Número para teste:
Resultado:
Exibir todos os primos em um intervalo
Agora vamos mais além.O usuário vai fornecer dois números, o inicio e o fim, e nosso script vai mostrar TODOS os primos dentro desse intervalo!
Usaremos uma técnica chamada: aninhamento, pois vamos aninhar um laço FOR dentro de outro.
Ou seja, vai ter um FOR dentro de outro laço FOR.
O primeiro laço FOR faz com que a variável count receba todos os valores de inicio até fim.
Assim que entra no primeiro laço, precisamos colocar a variável divisores como 0.
Em cada valor desse de count, vamos testar se ele é primo.
Para isso, usamos o código do exemplo anterior.
Ou seja, vamos pegar o resto da divisão entre count e 1, 2, 3, ..., count.
Se ao final desse laço interno a variável divisores for igual a 2, é porque tal número é primo, e adicionamos essa informação na string texto.
Findado ambos laços, mandamos essa string para a página HTML, via propriedade innerHTML da div resposta.
Código HTML:
<!DOCTYPE html> <html> <head> <title>Apostila JavaScript Progressivo</title> <script type="text/javascript" src="script.js"></script> </head> <body> Inicio do intervalo: <input id="inicio" type="number" /> <br /> Fim do intervalo : <input id="fim" type="number" /> <br /> <button onclick="primo()">Testar</button><br /> Resultado: <div id="resposta"> </body> </html>script.js:
function primo(){ var inicio = parseInt(document.getElementById('inicio').value); var fim = parseInt(document.getElementById('fim').value); var resposta = document.getElementById('resposta'); var texto=''; var divisores; for(var count=inicio ; count<=fim ; count++){ divisores=0; for(var aux=1 ; aux<=count ; aux++) if(count % aux == 0) divisores++; if(divisores==2) texto += count + '<br />'; } resposta.innerHTML = texto; }Resultado:
Inicio do intervalo:
Fim do intervalo :
Resultado:
Obrigado pela dica.
ResponderExcluirSolução bem pensada!
Aparece uma outra opção que ainda não descobri como se faz.
Verdade. Não repassou a segunda opção. Mas, encontrei a solução assim. Por exemplo, números primos até 100:
Excluirlet i = 2;
let j = 1;
let soma = 0;
console.log(`Números primos de 1 até 100 é: `);
while(i < 100){
j = 2;
while(j < i){
if(i % j ==0){
j = i + 1;
}else{
j = j + 1;
}
}
if( j == i ){
console.log(i)
soma = soma + i;
}
i = i +1;
}
console.log(`soma dos números primos: ${soma.toLocaleString("pt-BR") }`)
Um erro. E eu queria saber como resolver. Se vc colocar muitos numeros acaba que buga o script e da erro como resolver ?
ResponderExcluirSe vc colocar tipo 0010191938383882188181813 muitos numeros assim acaba que buga o site como resolver ?
ResponderExcluirSe vc colocar muitos numeros como 1010202029393838383727272729 acaba que buga o "site" eu como que resolve isso ?
ResponderExcluir