diff --git a/desafio-02/osmarwilliam/c/README.md b/desafio-02/osmarwilliam/c/README.md new file mode 100644 index 000000000..2a6800cd7 --- /dev/null +++ b/desafio-02/osmarwilliam/c/README.md @@ -0,0 +1,26 @@ +Como compilar e testar arquivos em C? +- instale o compilador GCC + * Ambiente linux: em praticamente todas distros o compilador GCC já está presente, verifique no terminal. + ``` + gcc --version + ``` + * Ambiente Windows: pouco mais trabalhoso e manual. + 1) Faça download do MinGW (pelo sourceforge.net) + 2) Faça a instalação: + * Importante, lembre-se de instalar o mingw32-base na aba de packages em seguida clique em "installation --> Apply Changes" + * Copie o endereço da subpasta bin geralmente encontrada em C:\mingw64\bin + 3) Crie uma nova variável de ambiente: pesquise na Barra de Início por "variáveis de ambiente" e abra, marque a opção "Path" e clique no botão "Editar", após isso clique em "Novo" e cole o endereço do caminho: C:\mingw64\bin +- Compilando + * Entre no devido diretório, onde está contido o arquivo que irá ser compilado: + ``` + ~/op-desafios/desafio-02/osmarwilliam/c + ``` + * Execute o comando ls no terminal, tenha certeza que o arquivo está presente. + * Digite o seguinte comando no terminal para gerar um arquivo executável: gcc -o [nome para o arquivo executável] [arquivo com *.c] + ``` + gcc -o numPrimos numPrimos.c + ``` + * Para executar: + ``` + ./numPrimos + ``` \ No newline at end of file diff --git a/desafio-02/osmarwilliam/c/numPrimos.c b/desafio-02/osmarwilliam/c/numPrimos.c new file mode 100644 index 000000000..eae12bf8c --- /dev/null +++ b/desafio-02/osmarwilliam/c/numPrimos.c @@ -0,0 +1,24 @@ +#include + +int main() +{ + int numero_max = 10000; + int lista[numero_max]; // para resolver o problema usando o Crivo de Eratóstenes primeiro devemos criar um array com todos os elementos + for (int i = 0; i < numero_max; i++) + { + lista[i] = i + 2; // lista[2..10000] + } + printf("%i\n", lista); + // implementando o Crivo de Eratóstenes + for (int i = 0; i < numero_max; i++) + if (lista[i] != 0) + for (int j = i + lista[i]; j < numero_max; j += lista[i]) + { + lista[j] = 0; // toda vez que um número for múltiplo irá receber como valor 0 + } + for (int i = 0; i < numero_max; i++) + if (lista[i] != 0) + // no array todo número que não é primo tem o valor de 0, logo iremos excluir esses e imprimir o restante + printf("%i\n", lista[i]); + return 0; +} \ No newline at end of file