Programar um algoritmo para mostrar numeros primos

06/01/2020

20

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 ?
Responder

Post mais votado

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));
 }
Responder

Mais Posts

07/01/2020

Weslley Felix

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 ?
Responder
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?
Responder
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.



Responder
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.
Responder

07/01/2020

Daniel Melo

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;
		                }
		            }
		        }
		    }
		}
	}
}

Responder

07/01/2020

Weslley Felix

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);

	}

}
Responder

07/01/2020

Weslley Felix

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
Responder
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);
Responder

10/01/2020

Manoel Junior

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!!!
Responder
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);
}
}
Responder

10/01/2020

Isaias Dias

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;
}
//
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar