Questão de Programação — Linguagens de programação — FGV 2025
- Código
- fg108607
- Banca
- FGV
- Órgão
- DPE-RO
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista Programador - Classe B
- A10.
- B7.
- C6.
- D5.
- E0.
GabaritoC — 6.
Gabarito: letra C – a função print(inc) é acionada 6 vezes. O código testa, para cada inc de 0 a 9, se o número é primo ou atende a uma condição derivada do break. A simulação manual mostra que apenas inc = 0, 1, 2, 3, 5, 7 acionam o print.
O código pode ser interpretado como uma versão compacta de um teste de primalidade: o laço interno procura um divisor junk de inc, e a condição final junk > inc/junk equivale a junk**2 > inc. Se nenhum divisor for encontrado (ou seja, se o break não ocorrer antes de junk exceder a raiz quadrada), o número é impresso. O break interrompe o laço ao encontrar um divisor exato. Para inc = 4, 6, 8, 9, o break é acionado e a condição final é falsa, impedindo a impressão.
Simulação passo a passo:
inc | j(início) | laço interno (j) | break? | j após laço | inc/j | j > inc/j? | print? |
|---|---|---|---|---|---|---|---|
0 | 2 | não entra (2>0) | não | 2 | 0.0 | sim | sim |
1 | 2 | não entra (2>0.5) | não | 2 | 0.5 | sim | sim |
2 | 2 | não entra (2>1) | não | 2 | 1.0 | sim | sim |
3 | 2 | não entra (2>1.5) | não | 2 | 1.5 | sim | sim |
4 | 2 | 2: 4%2=0 → break | sim | 2 | 2.0 | não | não |
5 | 2 | 2: não break | não | 3 | 1.666 | sim | sim |
3: 3>1.666 sai | |||||||
6 | 2 | 2: 6%2=0 → break | sim | 2 | 3.0 | não | não |
7 | 2 | 2: não break | não | 3 | 2.333 | sim | sim |
3: 3>2.333 sai | |||||||
8 | 2 | 2: 8%2=0 → break | sim | 2 | 4.0 | não | não |
9 | 2 | 2: não break | não | 3 | 3.0 | não | não |
3: 9%3=0 → break | sim | 3 |
Total de impressões: 6.
A alternativa sugere que todas as iterações do laço externo (0 a 9) acionam o print. Isso ignoraria a condição if (junk > inc/junk) e o break interno. Incorreto.
Contagem próxima, mas errada. O candidato pode ter considerado que inc=4 também imprime, ou deixado de fora algum caso. Simulação mostra apenas 6.
Conforme demonstrado na simulação. Os números que passam no teste são: 0,1,2,3,5,7.
Valor abaixo do correto. Indica que faltou algum número (provavelmente 0 ou 2).
Sugere que o print nunca é executado, o que é falso: a condição inicial é verdadeira para vários valores.
Para questões de rastreamento de código, simule manualmente com uma tabela, anotando valores de variáveis a cada iteração. Preste atenção especial ao comportamento do break e às conversões implícitas de tipo (divisão // vs / em Python).
Link permanente: /questoes/fg108607