Programar um algoritmo para mostrar numeros primos

Algoritmo

Java

Lógica de programação

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.



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

Weslley Felix

Curtidas 0

Melhor post

Manoel Junior

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

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

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?
GOSTEI 0
Fernando Junior

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

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

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

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

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

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

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

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

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;
}
//
GOSTEI 0
POSTAR