O seguinte pseudocódigo verifica se um número corresponde ao conjunto de Números Primos de Mersenne, da forma
, onde n é um número primo. (
pontos).
programa
{
inclua biblioteca Matematica --> mat
funcao inicio()
{
inteiro num, i, j, mersenne
logico ver_num, ver_mer, eh_mer
para (num = 1; num < 8; num = num + 2)
{
se (num <= 1)
{
ver_num = falso
}
senao
{
ver_num = verdadeiro
i=2
faca{
se (num % i == 0)
{
ver_num = falso
}
i=i+1
}
enquanto(i <= mat.raiz(num,2) e ver_num)
}
mersenne = mat.potencia(2, num) - 1
se (mersenne <= 1)
{
ver_mer = falso
}
senao
{
j=2
ver_mer = verdadeiro
enquanto (j <= mat.raiz(mersenne,2) e ver_mer)
{
se (mersenne % j == 0)
{
ver_mer = falso
}
j=j+1
}
}
eh_mer = ver_num e ver_mer
se(eh_mer){
escreva(mersenne, " é um número de Mersenne \n") //Saida
}
}
}
}
programa
{
inclua biblioteca Matematica --> mat
funcao inicio()
{
inteiro num, i, j, mersenne
logico ver_num, ver_mer, eh_mer
para (num = 1; num < 8; num = num + 2)
{
se (num <= 1)
{
ver_num = falso
}
senao
{
ver_num = verdadeiro
i=2
faca{
se (num % i == 0)
{
ver_num = falso
}
i=i+1
}
enquanto(i <= mat.raiz(num,2) e ver_num)
}
mersenne = mat.potencia(2, num) - 1
se (mersenne <= 1)
{
ver_mer = falso
}
senao
{
j=2
ver_mer = verdadeiro
enquanto (j <= mat.raiz(mersenne,2) e ver_mer)
{
se (mersenne % j == 0)
{
ver_mer = falso
}
j=j+1
}
}
eh_mer = ver_num e ver_mer
se(eh_mer){
escreva(mersenne, " é um número de Mersenne \n") //Saida
}
}
}
}
num |
|
mersenne |
|
|
---|---|---|---|---|
ver_num | ver_mer | eh_mer | saída | |
:------ | :------ | :------- | :---- | |
2.a - Quais são os valores que a variável num pode assumir? (
ponto)
2.b - Determine o resultado que será apresentado na saída do programa, na linha 50, para os diferentes valores da variável num (
pontos)
2.c - Analisando o laço faça-enquanto das linhas 19 a 26 e comparando-o com o laço enquanto das linhas 38 a 45, qual seria a diferença de usar um ou outro neste caso? ( ponto)
2.c - Analisando o laço faça-enquanto das linhas 19 a 26 e comparando-o com o laço enquanto das linhas 38 a 45, qual seria a diferença de usar um ou outro neste caso? (
Passo 1
O pseudocódigo executa um laço
e, para cada valor de
, verifica se
é primo (
) e se
é primo (
). Se ambos forem verdadeiros, imprime
como número de Mersenne. Precisamos responder:
2.a) valores de ;
2.b) quais linhas são impressas;
2.c) diferença entre usar
2.a) valores de
2.b) quais linhas são impressas;
2.c) diferença entre usar
faça–enquanto
e enquanto
.Passo 2
Para 2.a, o laço inicia em
, testa
e incrementa de 2 em 2. Logo, os valores de
são
Passo 3
Para 2.b, analisamos cada caso:
-
: como , → não imprime nada. -
: e é primo → imprime
“7 é um número de Mersenne”. -
: e é primo → imprime
“31 é um número de Mersenne”. -
: e é primo → imprime
“127 é um número de Mersenne”.
Passo 4
Para 2.c, a diferença é que o laço
faça { … } enquanto(condição)
garante ao menos uma execução do corpo antes de testar a condição, enquanto o laço enquanto(condição) { … }
avalia a condição antes de executar o corpo, podendo não executar nenhuma vez se a condição for falsa inicialmente.Resposta
2.a)
2.b)
7 é um número de Mersenne
31 é um número de Mersenne
127 é um número de Mersenne
2.c) O
2.b)
7 é um número de Mersenne
31 é um número de Mersenne
127 é um número de Mersenne
2.c) O
faça–enquanto
executa o corpo uma vez antes de testar a condição; o enquanto
testa primeiro e pode não executar o corpo se a condição for falsa.