1¹. Questão: Número quadrado, em matemática, é um inteiro que pode ser escrito como o quadrado de outro número inteiro (Ex: 9 é quadrado, pois 9=3^{2} ). Ou ainda se a raiz quadrada de um número inteiro for outro número inteiro, o primeiro é um número quadrado. Sabendo disso, crie uma função que verifique se um número é quadrado ou não. Adicionalmente, faça a chamada da função para verificar os números 729 e 1444 .
Dica: para saber se uma variável x é inteira use x. is_integer()

Passo 1

O enunciado pede que eu crie uma função que verifique se um número é um número quadrado (ou seja, se existe um inteiro cujo quadrado é esse número) e que eu chame essa função para verificar os números 729 e 1444.
Informações relevantes fornecidas:
  • Definição: um inteiro n é quadrado se existe um inteiro k tal que n = k^{2}.
  • Dica do enunciado: para saber se uma variável x (float) é inteira, usar x.is_integer().
O que preciso entregar:
  • Uma função (em Python) que recebe um número e retorna se ele é quadrado ou não.
  • A chamada dessa função para os números 729 e 1444, mostrando o resultado.

Passo 2

Entendendo a ideia matemática (a pequena “aula” necessária).
  • Um número inteiro n é um quadrado perfeito se existe inteiro k tal que n = k^{2}.
  • Isso implica duas coisas práticas para checar:
    1. n deve ser inteiro e não-negativo (não faz sentido considerar números negativos como quadrados inteiros no conjunto dos inteiros).
    2. A raiz quadrada de n, ou seja \sqrt{n}, deve ser um número inteiro.
  • Em Python, uma forma direta (seguindo a dica) é computar x = \sqrt{n} com math.sqrt e testar x.is_integer(). Se for True, então n é quadrado perfeito.
  • Observação importante sobre precisão: math.sqrt retorna um float e, por conta de arredondamento, às vezes \sqrt{n} pode ser algo como 26.999999999999996 em vez de 27.0. Por isso, existe um método robusto com math.isqrt (disponível no Python 3.8+) que calcula a raiz inteira k = \lfloor\sqrt{n}\rfloor de forma exata: então basta testar se k^{2} = n. Vou mostrar ambas as versões (a que usa a dica e a versão robusta).

Passo 3

Vou construir primeiro a função seguindo exatamente a dica (usando math.sqrt e is_integer()). Passo a passo do que a função fará:
  • Recebe um argumento n.
  • Verifica se n é um inteiro não-negativo (se não for, retorna False).
  • Calcula x = \sqrt{n} com math.sqrt.
  • Verifica se x.is_integer() é True; se for, retorna True; caso contrário, False.
Exemplo de implementação em Python (seguindo a dica):
import math

def eh_quadrado_via_sqrt(n):
    # aceita apenas inteiros não-negativos
    if not isinstance(n, int) or n < 0:
        return False
    x = math.sqrt(n)         # x é float
    return x.is_integer()    # True se x for inteiro (ex: 27.0)
Explicação linha a linha:
  • import math: importa o módulo que tem sqrt.
  • if not isinstance(n, int) or n < 0: garante que n é inteiro e não-negativo; evita testar floats ou negativos.
  • x = math.sqrt(n): calcula \sqrt{n}.
  • return x.is_integer(): retorna True se \sqrt{n} for um inteiro (exatamente k.0).

Passo 4

Agora a versão robusta (recomendada para provas e para evitar surpresas com precisão):
  • Usa math.isqrt(n) que retorna o maior inteiro k tal que k^{2} \le n.
  • Depois verifica se k^{2} == n. Isso é exato e opera só com inteiros, sem problemas de ponto flutuante.
Implementação robusta em Python:
import math

def eh_quadrado_exato(n):
    # aceita apenas inteiros não-negativos
    if not isinstance(n, int) or n < 0:
        return False
    k = math.isqrt(n)       # k = floor(sqrt(n)) calculado exatamente
    return k * k == n       # True se k^2 == n
Explicação:
  • math.isqrt(n) devolve \lfloor\sqrt{n}\rfloor como inteiro, sem usar floats.
  • Se k^{2} = n, então n é um quadrado perfeito; caso contrário não é.

Passo 5

Agora aplico a função aos números pedidos: 729 e 1444.
  • Chamando a versão via sqrt:
print(eh_quadrado_via_sqrt(729))   # resultado esperado: True
print(eh_quadrado_via_sqrt(1444))  # resultado esperado: True
  • Chamando a versão exata:
print(eh_quadrado_exato(729))   # True
print(eh_quadrado_exato(1444))  # True
Cálculo mental rápido (para entender por que os resultados são True):
  • 27^{2} = 27 \times 27 = 729. Logo 729 é quadrado perfeito.
  • 38^{2} = 38 \times 38 = 1444. Logo 1444 é quadrado perfeito.

Passo 6

Resumo prático (como fareias na prova):
  • Se a questão permitir usar math.isqrt, preferir esse método por ser exato: calcular k = \texttt{isqrt}(n) e checar se k^{2} = n.
  • Se só puder usar raiz e is_integer(), seguir a dica: calcular \sqrt{n} e testar se o resultado é inteiro, lembrando de garantir que n é inteiro e não-negativo antes.

Resposta

729: True
1444: True

Exercícios relacionados