Programar um algoritmo para mostrar numeros primos
Olá pessoal, sou novato em programação e estou aprendendo. Preciso desenvolver um algoritmo para saída de números primos. Ex : digitei 100, daí deveria ter como saida 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.
Qual alteração eu poderia fazer na minha lógica para fazer funcionar esse algoritmo ?
import java.util.Locale; import java.util.Scanner; public class primeNumbers { public static void main(String[] args) { Locale.setDefault(Locale.US); Scanner scan = new Scanner(System.in); System.out.println("Enter a number"); int n = scan.nextInt(); for(int a = 0;a<=n;a++) { if(a%2==1) { System.out.println(+a); } } } }
Qual alteração eu poderia fazer na minha lógica para fazer funcionar esse algoritmo ?
Weslley Felix
Curtidas 0
Melhor post
Manoel Junior
07/01/2020
Bom dia, você deve condicionar como i mod 2 e i mod 3 para verificar se o resto é diferente de zero e então ser considerado número primo... veja o exemplo:
if ((i%2!=0) && (i%3!=0)){ System.out.println(Integer.valueOf(i)); }
GOSTEI 1
Mais Respostas
Weslley Felix
06/01/2020
Bom dia, você deve condicionar como i mod 2 e i mod 3 para verificar se o resto é diferente de zero e então ser considerado número primo... veja o exemplo:
if ((i%2!=0) && (i%3!=0)){ System.out.println(Integer.valueOf(i)); }
Olá Manoel, obrigado pela resposta e ajuda !
Por que no caso seria uma divisao por 3 ?
GOSTEI 0
Fernando Junior
06/01/2020
Olá pessoal, sou novato em programação e estou aprendendo. Preciso desenvolver um algoritmo para saída de números primos. Ex : digitei 100, daí deveria ter como saida 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.
[code=java
System.out.println("Enter a number");
int n = scan.nextInt();
for(int a = 0;a<=n;a++) {
if(a%2==1) {
System.out.println(+a);
}
}
[/code]
Você está apenas imprimindo os números ímpares, ou seja, os que divididos por dois tenham resto. Qual a sua definição para números primos? Tem que partir daí?
Como você saber que 2, 3, 5, 7, 11 e 13 são primos?
[code=java
System.out.println("Enter a number");
int n = scan.nextInt();
for(int a = 0;a<=n;a++) {
if(a%2==1) {
System.out.println(+a);
}
}
[/code]
Você está apenas imprimindo os números ímpares, ou seja, os que divididos por dois tenham resto. Qual a sua definição para números primos? Tem que partir daí?
Como você saber que 2, 3, 5, 7, 11 e 13 são primos?
GOSTEI 0
Fernando Junior
06/01/2020
Bom dia, você deve condicionar como i mod 2 e i mod 3 para verificar se o resto é diferente de zero e então ser considerado número primo... veja o exemplo:
if ((i%2!=0) && (i%3!=0)){ System.out.println(Integer.valueOf(i)); }
A solução que você deu apresenta os números que NÃO são divisíveis por 2 e 3:
DIVISÍVEIS POR 2 E 3:
0, 6, 12, 18, ..
OS QUE SÃO IMPRESSOS:
1, 2, 3, 4, 5, 7, 8, 9, 10, 11, ...
uma lista que contém primos e não primos.
GOSTEI 0
Fernando Junior
06/01/2020
Bom dia, você deve condicionar como i mod 2 e i mod 3 para verificar se o resto é diferente de zero e então ser considerado número primo... veja o exemplo:
if ((i%2!=0) && (i%3!=0)){ System.out.println(Integer.valueOf(i)); }
Olá Manoel, obrigado pela resposta e ajuda !
Por que no caso seria uma divisao por 3 ?
Para cada número considerado você deve buscar dividi-lo por 2, ... até ele mesmo e contar. Se apenas for divisível por ele é porque é primo, quando não, não é primo.
Exemplos:
Se você quiser saber se 8 é primo, tente dividi-lo por:
2, 3, 4, 5, 6, 7 e 8.
Vai ver que ele é divísivel por 2, 4 e 8 e portanto não é primo
Se você quiser saber se 11 é primo, tente dividi-lo por:
2,3,4,5,6,7,8,9,10,11
e verá que é divisível só por 11 e por isso é primo.
GOSTEI 0
Sadasd
06/01/2020
Eu consegui fazer de outra maneira:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Digite um número"); int numero = scan.nextInt(); if(numero <= 1){ System.out.println("Nenhum número primo encontrado"); }else if(numero == 2){ System.out.println(2); }else{ for(int i = numero; i > 1; i--){ for(int j = i - 1; j > 0; j--){ if(j == 1){ System.out.println(i); }else{ if(i%j == 0){ break; } } } } } } }
GOSTEI 1
Weslley Felix
06/01/2020
Eu consegui fazer de outra maneira:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Digite um número"); int numero = scan.nextInt(); if(numero <= 1){ System.out.println("Nenhum número primo encontrado"); }else if(numero == 2){ System.out.println(2); }else{ for(int i = numero; i > 1; i--){ for(int j = i - 1; j > 0; j--){ if(j == 1){ System.out.println(i); }else{ if(i%j == 0){ break; } } } } } } }
booa kkk
eu fiz essa gambiarra aqui óia
/*desenvolva um algoritmo para detectar numeros primos */ import java.util.Locale; import java.util.Scanner; public class primeNumbers { public static void main(String[] args) { Locale.setDefault(Locale.US); Scanner scan = new Scanner(System.in); System.out.println("Enter a number"); int n = scan.nextInt(); for (int a = 1; a <= n; a++) { if ((a % 2 != 0) && (a % 3 != 0) && (a % 5 != 0) && (a % 77 != 0) && (a % 49 != 0) && (a % 91 != 0)) { System.out.println(Integer.valueOf(a)); } } System.out.println(2); System.out.println(3); System.out.println(5); } }
GOSTEI 0
Weslley Felix
06/01/2020
Eu consegui fazer de outra maneira:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Digite um número"); int numero = scan.nextInt(); if(numero <= 1){ System.out.println("Nenhum número primo encontrado"); }else if(numero == 2){ System.out.println(2); }else{ for(int i = numero; i > 1; i--){ for(int j = i - 1; j > 0; j--){ if(j == 1){ System.out.println(i); }else{ if(i%j == 0){ break; } } } } } } }
Muito bom ... vou adaptar pro meu código com certeza
GOSTEI 0
Fernando Junior
06/01/2020
Eu consegui fazer de outra maneira:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Digite um número"); int numero = scan.nextInt(); if(numero <= 1){ System.out.println("Nenhum número primo encontrado"); }else if(numero == 2){ System.out.println(2); }else{ for(int i = numero; i > 1; i--){ for(int j = i - 1; j > 0; j--){ if(j == 1){ System.out.println(i); }else{ if(i%j == 0){ break; } } } } } } }
booa kkk
eu fiz essa gambiarra aqui óia
/*desenvolva um algoritmo para detectar numeros primos */ import java.util.Locale; import java.util.Scanner; public class primeNumbers { public static void main(String[] args) { Locale.setDefault(Locale.US); Scanner scan = new Scanner(System.in); System.out.println("Enter a number"); int n = scan.nextInt(); for (int a = 1; a <= n; a++) { if ((a % 2 != 0) && (a % 3 != 0) && (a % 5 != 0) && (a % 77 != 0) && (a % 49 != 0) && (a % 91 != 0)) { System.out.println(Integer.valueOf(a)); } } System.out.println(2); System.out.println(3); System.out.println(5); } }
Não era melhor então:
system.out.printl(2);
system.out.printl(3);
system.out.printl(5);
system.out.printl(7);
...
system.out.printl(97);
GOSTEI 0
Manoel Junior
06/01/2020
Bom dia, você deve condicionar como i mod 2 e i mod 3 para verificar se o resto é diferente de zero e então ser considerado número primo... veja o exemplo:
if ((i%2!=0) && (i%3!=0)){ System.out.println(Integer.valueOf(i)); }
Olá Manoel, obrigado pela resposta e ajuda !
Por que no caso seria uma divisao por 3 ?
Bom dia, não é uma divisão por 3. É uma condição para verificar o RESTO da divisão, então caso seja diferente de zero, pelo fato de não ser divisível por 2 ou 3 é considerado primo. Pode testar, é exibido somente os números primos!!!
GOSTEI 0
Vinícius Moraes
06/01/2020
Eu consegui fazer de outra maneira:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Digite um número"); int numero = scan.nextInt(); if(numero <= 1){ System.out.println("Nenhum número primo encontrado"); }else if(numero == 2){ System.out.println(2); }else{ for(int i = numero; i > 1; i--){ for(int j = i - 1; j > 0; j--){ if(j == 1){ System.out.println(i); }else{ if(i%j == 0){ break; } } } } } } }
Isso vai imprimir na ordem incorreta, daria pra fazer:
for(int i = 2; i ≤ numero; i++){
Boolean primo = true;
for(int j = 2; j ≤ i; j++){
if(i%j == 0 && i!=j){
primo = false;
break;
}
}
if(primo){
System.out.println(i);
}
}
GOSTEI 0
Isaias Dias
06/01/2020
Tente da seguinte maneira:
//
Locale.setDefault(Locale.US);
Scanner scan = new Scanner(System.in);
System.out.println("Enter a number");
int n = scan.nextInt();
for (int a = 2; a <= n; a++) {
if ( numPrimo(a) ) {
System.out.println(a);
}
}
//
Esse trecho de código vai dentro do método main. Iniciamos a variável a=2 pois o número 1 cumpre as condições mas não é considerado número primo. Fazemos a iteração da variável "a" onde pra cada iteração chamaremos uma função booleana passando como parâmetro o valor atual da variável "a" e verificar se este valor é primo ou não.
Fora do método main você irá criar o método que ira verificar se um número é primo ou não da seguinte forma:
//
private static boolean numPrimo( int n ){
for(int i = 2; i < n; i++){
if( n % i == 0)
return false;
}
return true;
}
//
//
Locale.setDefault(Locale.US);
Scanner scan = new Scanner(System.in);
System.out.println("Enter a number");
int n = scan.nextInt();
for (int a = 2; a <= n; a++) {
if ( numPrimo(a) ) {
System.out.println(a);
}
}
//
Esse trecho de código vai dentro do método main. Iniciamos a variável a=2 pois o número 1 cumpre as condições mas não é considerado número primo. Fazemos a iteração da variável "a" onde pra cada iteração chamaremos uma função booleana passando como parâmetro o valor atual da variável "a" e verificar se este valor é primo ou não.
Fora do método main você irá criar o método que ira verificar se um número é primo ou não da seguinte forma:
//
private static boolean numPrimo( int n ){
for(int i = 2; i < n; i++){
if( n % i == 0)
return false;
}
return true;
}
//
GOSTEI 0