Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Resolvendo desafio 02 utilizando C #1096

Merged
merged 9 commits into from
Oct 21, 2024
26 changes: 26 additions & 0 deletions desafio-02/osmarwilliam/c/README.md
Original file line number Diff line number Diff line change
@@ -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
```
24 changes: 24 additions & 0 deletions desafio-02/osmarwilliam/c/numPrimos.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#include <stdio.h>

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;
}
Loading