Vamos a mais uma aula de dúvida? E nesta aula veremos como descobrir todos os números primos no intervalo entre 1 e 500 com a linguagem de programação C.
Perceba que desejamos descobrir um conjunto de valores, os números primos existentes entre 1 e 500. Contudo, antes de procurarmos por esse conjunto de valores, precisamos saber o que significa número primo. Dizendo em palavras, como saber de um número é primo ou não?
Para isso precisamos recorrer ao conceito matemático de números primos.
Número Primo
É dito primo todo número que possui apenas dois divisores inteiros.
Expressando essa definição em outros termos, significa que todo número primo é divisível de forma exata apenas por 1 e por ele mesmo.
O primeiro número primo é o 2. Observe que o número 2 é divisível de forma exata apenas por 1 e por ele mesmo.
O 167 também é um número primo. Isso significa que ele também é divisível apenas por 1 e por 167.
Agora, antes de procurar por todos os números primos entre 1 e 500, precisamos escrever um código que, dado um número inteiro qualquer, nos diga se ele é primo ou não. Isso tem a cara de uma função, não é?
O trecho de código a seguir faz exatamente isso. É uma função que recebe um número inteiro e retorna 1, caso ele seja um número primo, e zero caso contrário. Para descobrir se o número é primo ou não é feita uma iteração (repetição) iniciando em 1 e indo até o número que desejamos descobrir se é primo ou não. Nesta repetição contamos os divisores do número. Ao final, basta verificar se a quantidade de divisores é exatamente igual a 2. Se for, então ele é primo (divisível apenas por 1 e por ele mesmo), senão, não é primo.
int ehPrimo(int x){ int i, divisores = 0; for(i = 1; i <= x; i++){ if(x % i == 0) divisores++; } if(divisores == 2) return 1;// é primo else return 0; // não é primo }
Agora que já sabemos identificar se um número é primo ou não, basta chamar nossa função para todos os números que desejamos verificar. Como queremos os primos entre 1 e 500, basta fazer uma repetição para este intervalo e, para cada valor, chamar nossa função e verificar seu retorno, como feito na função principal a seguir.
int main(){ int i; for(i = 1; i <= 500; i++){ if(ehPrimo(i) == 1) // se for primo printf("%d, ", i); // imprime na tela } return 0; }
Código completo em C
#include <stdio.h> #include <stdlib.h> /* Código escrito por Wagner Gaspar em 23/05/2022 */ int ehPrimo(int x){ int i, divisores = 0; for(i = 1; i <= x; i++){ if(x % i == 0) divisores++; } if(divisores == 2) return 1;// é primo else return 0; // não é primo } int main(){ int i; for(i = 1; i <= 500; i++){ if(ehPrimo(i) == 1) // se for primo printf("%d, ", i); // imprime na tela } return 0; }