Desafios de Programação
Semana 10
- Conteúdo
- Teoria dos Números
- Atividades
Material Didático cedido pelo Professor Marcos Lage
Introdução
Matemática e competições de programação?
-
Como vimos nos últimos slides, inúmeros problemas de Matemática são temas de questões de competições de programação!
-
Nesta aula apresentaremos tópicos sobre Teoria dos Números.
Números Primos
2, 3, 5, 7, 11, 13, 17, 19, 23, 17, ...
-
Um número inteiro $𝑛>1$ é dito primo se é divisível apenas por 1 e por ele mesmo.
-
Para testar se um número é primo, podemos usar a rotina abaixo:
C/C++:
bool is_prime(long n)
{
if (n == 1) return false;
if (n == 2) return true;
if (n % 2 == 0) return false;
long lim = (long)sqrt(n) + 1;
for (long i = 3; i <= lim; i += 2)
if (n % i == 0)
return false;
return true;
}
Números Especiais
Números amigos e número abundante
-
Números amigos - Dois números inteiros em que cada um deles é a soma dos divisores próprios do outro.
Exemplo:
Os divisores de 220 são 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 e 110 cuja soma é 284 e os de 284 são 1, 2, 4, 71 e 142 cuja soma é 220.
-
Número abundante - Número inteiro menor que a soma dos seus divisores próprios.
Exemplo:
O número 12 tem divisores 1, 2, 3, 4 e 6 cuja soma é 16.
Números Especiais
Número deficiente, perfeito e quadrado perfeito
-
Número deficiente - Número inteiro maior que a soma dos seus divisores próprios.
Exemplo:
O número 15 tem divisores 1, 3 e 5 cuja soma é 9.
-
Número perfeito - Número inteiro igual a soma dos seus divisores próprios.
Exemplo:
O número 28 tem divisores 1, 2, 4, 7 e 14 cuja soma é 28.
-
Número quadrado perfeito - Número inteiro que pode ser expresso como o quadrado de outro inteiro.
Exemplo:
O número 9 é igual a $3^2$.
Divisibilidade
Máximo Divisor Comum (MDC)
-
Dois números naturais sempre têm divisores comuns.
Exemplo:
Os divisores comuns de 12 e 18 são 1,2,3 e 6. Logo o MDC é 6.
-
O MDC entre dois números pode ser calculado através da rotina:
C/C++:
long mdc(long p, long q, long &x, long &y)
{
long x1, y1;
if (q > p)
return gcd(q, p, x, y);
if (q == 0) {
x = 1;
y = 0;
return p;
}
int g = gcd(q, p % q, x1, y1);
x = y1;
y = x1 – floor((p/q) * y1);
return g;
}
Divisibilidade
Máximo Divisor Comum (MDC)
Exemplo de problema:
Enunciado:
Três fios medem 24m, 84m e 90m foram cortados em pedaços iguais e do maior tamanho possível. Quanto cada pedaço deve medir?
Resposta:
MDC(24, 84, 90) = 2 x 3 = 6.
Divisibilidade
Mínimo Múltiplo Comum (MMC)
-
Dois ou mais números sempre têm múltiplos comuns a eles.
Exemplo:
Os multiplos de 4 são 8, 12, 16, 20, etc e os múltiplos de 6 são 12, 18, 24, 32, etc. Logo o MMC é 12.
-
O MMC entre dois números pode ser calculado através da rotina:
C/C++:
long mmc(long p, long q)
{
long x, y;
return (p * q) / mdc(p, q, x, y);
}
Divisibilidade
Mínimo Múltiplo Comum (MMC)
Exemplo de problema:
Enunciado:
Se o ano 2000 teve eleições presidenciais (ocorrem de 4 em 4 anos) e censo (ocorrem de 10 em 10 anos), qual o ano seguinte em que os dois eventos coincidiram?
Resposta:
2020 = 2000 + MMC(4,10)
Aritmética Modular
Identidades
-
Adição e subtração:
$(x\pm y) \hspace{-0.4cm}\mod n = ((x \hspace{-0.4cm}\mod n) \pm (y \hspace{-0.4cm}\mod n)) \hspace{-0.4cm}\mod n$
-
Multiplicação:
$(x y) \hspace{-0.4cm}\mod n = ((x \hspace{-0.4cm}\mod n) (y \hspace{-0.4cm}\mod n)) \hspace{-0.4cm}\mod n$
-
Potênciação:
$x^y \hspace{-0.4cm}\mod n = (x \hspace{-0.4cm}\mod n)^y \hspace{-0.4cm}\mod n$
Congruência
Introdução
-
Dizemos que $a$ e $b$ são congruentes módulo $m$ quando a diferença deles é um inteiro múltiplo de $m$.
Isto é:
$(a-b) \hspace{-0.4cm}\mod m \Rightarrow a \hspace{-0.4cm}\mod m = b \hspace{-0.4cm}\mod m$.
-
Notação: $a \equiv b \hspace{-0.4cm}\mod m$
Congruência
Identidades
-
Se:
$a \equiv b \hspace{-0.4cm}\mod n \hspace{0.6cm}$ e $\hspace{0.6cm} c \equiv d \hspace{-0.4cm}\mod n$
-
Adição e Subtração:
$a \pm c \equiv b \pm d \hspace{-0.4cm}\mod n$
-
Multiplicação:
$a c \equiv b d \hspace{-0.4cm}\mod n$
Congruência
Identidades
-
$a d \equiv b d \hspace{-0.4cm}\mod n \hspace{0.6cm} \Longleftrightarrow \hspace{0.6cm} a \equiv b \hspace{-0.4cm}\mod n$
-
$a d \equiv b d \hspace{-0.4cm}\mod nd \hspace{0.6cm} \Longleftrightarrow \hspace{0.6cm} a \equiv b \hspace{-0.4cm}\mod n$
-
$a \equiv b \hspace{-0.4cm}\mod n \hspace{0.6cm}$ e $\hspace{0.6cm} b \equiv c \hspace{-0.4cm}\mod n \hspace{0.6cm} \Longleftrightarrow \hspace{0.6cm} a \equiv c \hspace{-0.4cm}\mod n$
-
$ad \equiv bd \hspace{-0.4cm}\mod n \Longleftrightarrow \hspace{0.6cm} a \equiv b \hspace{-0.4cm}\mod \frac{n}{\text{mdc}(d,n)}$
-
$a \equiv b \hspace{-0.4cm}\mod m \hspace{0.1cm}$ e $\hspace{0.1cm} a \equiv b \hspace{-0.4cm}\mod n \hspace{0.1cm} \Longleftrightarrow \hspace{0.1cm} a \equiv b \hspace{-0.4cm}\mod \text{mmc}(m,n)$
-
$a \equiv b \hspace{-0.4cm}\mod n \Longleftrightarrow P(a) \equiv P(b) \hspace{-0.4cm}\mod n \hspace{0.6cm}$
Onde $P$ é um polinômio.
Atividades
Sugestão de estudo
Leitura:
- Capítulo 5 do livro texto Competitive Programming 1
Halim, S. e Halim, F.
Exercícios:
- Lista de exercícios 08, de problemas Teoria dos Números.
Desafios de Programação
Semana 10
- Conteúdo
- Teoria dos Números
- Atividades
Material Didático cedido pelo Professor Marcos Lage