Informática, perguntado por Jujubay, 1 ano atrás

Exercício de Algoritmo, me ajuda?
Não usar vetor. Estrutura de repetição.
1. Um número é, por definição, primo se ele não tem divisores, exceto 1 e ele próprio. Prepare um algoritmo para ler um número inteiro positivo e determinar se ele é ou não um número primo.


feperessim: O algoritmo teria que ser escrito em alguma linguagem de programaçao?
Jujubay: sim..codeblock q uso
feperessim: Qual linguagem ?
Jujubay: linguagem em C
feperessim: Eu posso escrever um código para resolver esse problema. Você quer ? Porém tem duas formas de resolver esse problema. Uma delas é usando um algoritmo chamado sieve de Eratosthenes que tem a capacidade de encontrar números primos com uma grande rapidez, mas para esse algoritmo teria que usar vetores. No seu caso o usuário tem que passar um número e o programa dizer se ele é primo ou não ?
Jujubay: Isso..mas preciso sem usar Vetor..meu professor passou esse exerc. n entende direito..falo q n era pra usr Vetor

Soluções para a tarefa

Respondido por feperessim
2
#include <stdio.h>

int main(void)
{
       int n;
       int divisores;

       scanf("%d", &n);
       if (n < 2) {
               printf("%d nao e primo", n);
               return 0;
       }
       for (divisores = n-1; divisores > 1; divisores--) {
               if (n % divisores == 0) {
                       printf("%d nao e divisor", n);
                       return 0;
               }
      }
     printf("%d e primo\n", n);
     return 0;
}

 Nós temos duas variáveis no programa n e divisores, o usuário passa o número que ele quer testar para saber se é primo ou não.

 Após o programa receber esse número fazemos um teste para saber se o numero dado pelo usuário é menor que 2 se for menor que 2 o número não é primo então o programa retorna zero para o sistema operacional e o programa acaba ali. caso contrário inicia-se o laço for.
Como nós sabemos que todo número é divisível por 1 e por ele mesmo então não precisamos perder tempo fazendo esse teste, então iniciamos a variável divisores com o valor de
n - 1; testamos se esse valor é maior do que 1 então o laço inicia dentro do laço  o programa testa se n é divisível por divisores , caso seja então sabemos que o número não é primo, nesse caso o programa retorna 0 para o sistema operacional e o programa acaba ali. Caso contrário se nenhum número for divisor então nós sabemos que o número realmente é apenas divisível por 1 e por ele mesmo, então nós temos um número primo. O número e a mensagem de que ele é primo é mostrada na tela, o programa retorna 0 para o sistema operacional e o programa termina.

Um exemplo de como o programa funciona para n = 5;

n é maior que 2 então o laço inicia, divisores é igual a 5 - 1;
Então a cada iteração nós testamos se a divisão de 5 por n -1 é zero.
E a cada iteração o valor de divisores é decrementado até que o valor seja igual a 1 ai nesse caso o laço é terminado.

5 % 4 == 1;
5 % 3 == 1
5 % 2 == 1;

fim.

Temos um número primo.

Espero que você consiga entender com o meu exemplo, se precisar de mais detalhes é só dizer.
Perguntas interessantes