Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FGV 2025

ProgramaçãoLinguagens de programação
Código
fg108607
Banca
FGV
Órgão
DPE-RO
Ano
2025
Nível
Superior
Cargo
Analista Programador - Classe B
Analise o código Python a seguir.inc = 0while(inc < 10): junk = 2 while(junk <= (inc/junk)): if not(inc%junk): break junk = junk + 1 if (junk > inc/junk) : print (inc) inc = inc + 1Ao executar o código, a quantidade de vezes que a função print(inc) é acionada é igual a
  1. A10.
  2. B7.
  3. C6.
  4. D5.
  5. E0.
Revelar gabarito e comentário

GabaritoC — 6.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Rastreamento de código Python – laços aninhados e condicionais

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.

  1. 1inc=0 a 3
  2. 2inc=4
  3. 3inc=5
  4. 4inc=6
  5. 5inc=7
  6. 6inc=8
  7. 7inc=9
LEVEL · soulevel.com.br

Alternativa A – ❌ Incorreta (10)

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.

Alternativa B – ❌ Incorreta (7)

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.

Alternativa C – ✅ Correta (6) ⟵ GABARITO

Conforme demonstrado na simulação. Os números que passam no teste são: 0,1,2,3,5,7.

Alternativa D – ❌ Incorreta (5)

Valor abaixo do correto. Indica que faltou algum número (provavelmente 0 ou 2).

Alternativa E – ❌ Incorreta (0)

Sugere que o print nunca é executado, o que é falso: a condição inicial é verdadeira para vários valores.

PEGA ESSA DICA!

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