Ir para conteúdo
Fórum Script Brasil
  • 0

Quantidade de primos ta errada, alguém sabe o porque ?


Leon Lopes

Pergunta

include<stdio.h>

int main(){

    int v[10],par=0,imp=0,pri=0,i,x,div=0;

    printf("digite 10 numeros: \n");

    for(i=0;i<9;i++){
        scanf("%d\n",&v);
    }

    for(i=0;i<9;i++){
        if(v%2==0){
            par++;
        }
        else{
            imp++;
        }
    }

    for(i=0;i<9;i++){
            for(x=1;x<=v;x++){
                if(v%x==0){
                    div++;
                }
                if(div==2){
                    pri++;
                     
                }

            }

    }

    printf("PARES: %d\nIMPARES: %d\nPRIMOS: %d\n",par,imp,pri);

return 0;
}

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Olá. Fazendo uso de uma função fika muito mais simples resolver esse exercício (não sei se estudou sobre funções)

Se conseguir entender a lógica que é usada na função vai saber resolver fazendo uso de dois for aninhados (por exemplo)

Segue o código:

#include <stdio.h>

int ehPrimo(int n) {

    int i, primo;

    primo = 1;
    for (i = 2; i < n; i++) {
        if (n % i == 0) primo = 0;
    }
    return (primo && n > 1);
}

int main() {

    int v[10], par, imp, pri, i, x, div;
   

    for (i = 0; i < 10; i++) {
        printf("Digite o numero %d: ", i + 1);
        scanf("%d", &v[i]);
    }

    for (i = 0; i < 10; i++) {
        printf("%d ", v[i]);
    }

    par = 0;
    imp = 0;
    for (i = 0; i < 10; i++) {
        if (v[i] % 2 == 0) {
            par++;
        }
        else if (v[i] % 2 != 0) {
            imp++;
        }
    }

    pri = 0;
    for (i = 0; i < 10; i++) {
        if (ehPrimo(v[i])) pri++;
    }

    printf("\nPARES: %d\nIMPARES: %d\nPRIMOS: %d\n", par, imp, pri);

    return 0;
}

Vê se consegue entender a lógica do código para daí resolver o exercício sem o uso de uma função

 

Editado por Visitante
correção no código
Link para o comentário
Compartilhar em outros sites

  • 0

Olá @Leon Lopes

Da forma como você está fazendo para verificar a quantidade de números primos não tem  como dar certo

Você não está verificando se um número do vetor é divisível por outro valor, o que você está fazendo é verificando se uma variável é divisível por outra (o resto da divisão de uma variável por outra). Percebe onde está o erro?

Também é importante ajustar o for que percorre todos os índices do vetor, que deve ir de 0 a 9

Veja como ficaria o cálculo para os números primos:

pri = 0;
for (i = 0; i < 10; i++) {
    div = 0;
    for (j = 1; j <= vet[i]; j++) {
        if (vet[i] % j == 0) { // Verifica se o resto da divisão de um número do vetor por j (se um nº do vetor é divisível por j)
            div++;
        }
    }
    if (div == 2 && vet[i] > 1) {
        pri++;
    }
}

Procure perceber a diferença e vai ver onde estava o erro

Para calcular a quantidade de números pares e ímpares um if/else já resolve, do modo como vinha fazendo

Forte abraço!

Editado por Visitante
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...