Dúvida com Estruturas de Repetição

3 respostas
helex

Olá, to fazendo um programinha de verificação de números primos.
A entrada do número é feita pelo teclado, podendo o usuário inserir uma série de números quaisquer. E o objetivo do programa é retornar a quantidade de números que são primos, dentre os que foram inseridos.

A minha dúvida está no método contaPrimos. Usei o for, mas ele não tá entrando em loop, não to conseguindo fazer isso. Ou ele pára logo no início ou ele fica em loop infinito. Alguém poderia ajudar? Valeu

import java.util.Scanner;

public class Tarefa0505{

	public static void main (String [] args){
		Scanner s = new Scanner(System.in);
		int numero = s.nextInt();
		while (s.hasNext()) {
      		if (s.hasNextInt()) {
        	numero = s.nextInt();
       		} else {
      			break;
      		}
		}


		System.out.println(contaPrimos(numero));
	}

	public static boolean ehPrimo(int numero){
		if (numero == 1) {
			return false;
		}
		if (numero % 2 == 0 && numero != 2) {
			return false;
		}
		int raiz = (int)Math.sqrt(numero);
		for(int i=3; i <= raiz; i+=2) {
			if (numero % i == 0) {
				return false;
			}
		}
		return true;
	}

	public static int contaPrimos(int numero) {
		int contaPrimos = 0;
		for(int i = numero; i == numero; i++) {
			if (ehPrimo(numero)) {
				contaPrimos++;
			}
		}
		return contaPrimos;

	}
}

Procurei aqui no forum, tem até situações parecidas, mas não ficou claro pra mim a parte do For

3 Respostas

caio.gaspar

esse for que voce esta utilizando é dividido em 3 partes

for(int i = numero; i == numero ; i ++)

parte 1
i = numero( voce declara uma variavel ( i ) e atribui o valor de numero para ela;


parte 2
i == numero (voce define uma condição para o laço ocorrer, ou seja, se essa condição é verdadeira o laço acontecerá)


parte 3

i++

voce define de quanto em quanto a variavel ( i ) irá ser aumentar ou diminuir

dionat4n

Teu for precisa ter uma condição de fim correta.

Está assim:
for(int i = numero; i == numero; i++) {

e deveria estar assim:

int inicio = 1;

for(int i = inicio; i <= numero; i++) {
helex

Entendi, vlw aí

Na verdade, tem outros problemas no programa, por isso tá dando errado

Criado 9 de maio de 2011
Ultima resposta 9 de mai. de 2011
Respostas 3
Participantes 3