Esta tarefa é sobre usar pipes e ferramentas do Linux. Nela, você deverá escrever um prorama que recebe como entrada uma sequência de números inteiros positivos, separados por um caractere newline. A sequência é encerrada pelo número -1. O programa deve escrever na tela todos os números não-primos dessa sequência, um por linha ordenados do maior para o menor.
Dicas:
- Um número primo é aquele que tem exatamente dois divisores inteiros (ele mesmo e algum outro inteiro). O número 1 não é primo, pois tem apenas um divisor inteiro.
- Lembre-se da função
popen()
que vimos em sala, e das ferramentas POSIX que temos disponíveis (grep
,cat
,echo
,sort
,sed
,tr
,top
, etc.). Embora seja tecnicamente possível implementar o algoritmo inteiro com força bruta, é uma ótima idéia usar as funcionalidades que já existem disponíveis. - O programa deverá ser escrito em C (ou seja: não é permitido usar um shell script único)
- A execução de cada teste está sujeita a um limite de tempo de 10 segundos (a máquina na qual estou executando os programas tem um processador Core i7 de 3.0GHz)
Entrada | Saida |
---|---|
1\n2\n3\n-1\n |
1\n |
10\n8\n4\n5\n3\n1\n-1\n |
10\n8\n4\n1\n |
- Vá diretamente ao conjunto de testes para verificar como tratar casos limítrofes ou mal-definidos.
- Lembre-se de seguir as instruções de submissão.
- Se desejar, proponha novos casos de teste.