Logo Passei Direto
Buscar
Dado o seguinte programa em C com uma função recursiva para verificar se um número é primo, assinale a alternativa correta:
#include
int aux(int n, int C) {
if (n % c == 0 && n != 2)
return 0;
else if (c > n / 2)
return 1;
else
return aux(n,c + 1);
}
int ehPrimo(int x) {
return aux(x, 2);
}
int main(voiD) {
int numero;
printf("Digite um numero: ");
scanf("%d",&numero);
if (ehPrimo(numero))
printf("O numero eh primo\n");
else
printf("O numero nao eh primo\n");
return 0;
}
Assinale a alternativa correta sobre o programa apresentado.
A) 2 não é o único número par considerado primo; 0 também o é.
B) Um valor muito alto informado em numero ocasiona um alto consumo de memória para determinar se é primo.
C) Os números serão incrementados para verificação da divisão até chegar ao valor informado pelo usuário.
D) O algoritmo resultará em erro, pois espera que o retorno da função ehPrimo() seja comparado com 1.
E) A recursividade é utilizada para percorrer todos os números primos em busca de um divisor para o valor especificado.
User badge image
Exercícios Para o Conhecimento

há 4 semanas

Respostas

User badge image

Ed Verified user icon

há 4 semanas

Vamos analisar o programa e as alternativas passo a passo: 1. A função `aux` verifica se `n` é divisível por `c`. Se for divisível e `n` não for 2, retorna 0 (não primo). 2. Se `c` ultrapassar `n/2`, retorna 1 (primo). 3. Caso contrário, chama recursivamente `aux(n, c+1)` para testar o próximo divisor. 4. A função `ehPrimo` inicia a verificação a partir de 2. 5. No `main`, o programa lê um número e imprime se é primo ou não. Agora, as alternativas: A) "2 não é o único número par considerado primo; 0 também o é." - Incorreto. 0 não é primo. B) "Um valor muito alto informado em numero ocasiona um alto consumo de memória para determinar se é primo." - Correto. Como a função é recursiva e incrementa `c` até `n/2`, para números grandes a recursão será profunda, consumindo muita memória. C) "Os números serão incrementados para verificação da divisão até chegar ao valor informado pelo usuário." - Incorreto. A verificação vai até `n/2`, não até `n`. D) "O algoritmo resultará em erro, pois espera que o retorno da função ehPrimo() seja comparado com 1." - Incorreto. A comparação no `if` funciona corretamente com 0 (falso) e 1 (verdadeiro). E) "A recursividade é utilizada para percorrer todos os números primos em busca de um divisor para o valor especificado." - Incorreto. A recursão percorre todos os números inteiros a partir de 2, não apenas primos. Resposta correta: B) Um valor muito alto informado em numero ocasiona um alto consumo de memória para determinar se é primo.

Essa resposta te ajudou?

0
Dislike0

Ainda não achou a resposta?

  • Integrado com os principais modelos de IA do mercado
  • Respostas em segundos
  • IA treinada para estudantes brasileiros.
PasseIA logoEvolua sua forma de estudar

Cadastre-se ou realize login

Ainda com dúvidas?

Envie uma pergunta e tenha sua dúvida de estudo respondida!

Essa pergunta também está no material:

Mais perguntas desse material

O escopo de uma variável está vinculado à sua visibilidade e ao seu tempo de vida no programa em relação às sub-rotinas que ele possui. Conceitualmente falando, as variáveis podem ter escopo global ou local, sendo que em C é possível declarar cinco classes de variáveis. Dentre elas, assinale a alternativa referente à classe em C que possui o menor escopo possível e não necessita de nenhuma palavra-chave adicional em sua declaração, apenas tipo variável: a. Estáticas. b. Globais. c. Externas. d. Registro. e. Locais.

Ponteiros são variáveis que armazenam um endereço de memória, geralmente a posição de outra variável da memória; por isso o ponteiro “aponta” para outra variável (SCHILDT, 1996). Dado o seguinte trecho de código, assinale a alternativa INCORRETA:
int *pti; int i = 10; pti = &i;
a. *pti é igual a 10.
b. Ao se executar *pti = 20; i passará a ter o valor 20.
c. pti é igual a 10.
d. Ao se alterar o valor de i, *pti será modificado.
e. pti armazena o endereço de i.

Ponteiros também podem ser declarados com associação a uma estrutura ou união, além dos tipos de dados básicos da linguagem C. Isto posto, assinale a alternativa referente ao significado correto de estrutura->membro: a. *estrutura.membro b. *estrutura[membro] c. estrutura.(*membro) d. (*estrutura).membro e. *(estrutura.membro)

Suponha uma função recebe por parâmetro um vetor do tipo float contendo os salários dos funcionários de uma multinacional. Segundo os tipos de variáveis em C aprendidos em nossa apostila, assinale a alternativa referente à classe mais apropriada para declarar a variável que acumulará a soma dos salários ao percorrer este vetor em um laço de repetição:
a. Registro.
b. Local.
c. Estática.
d. Global.
e. Externa.

Mais conteúdos dessa disciplina