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?
Números Primos
2, 3, 5, 7, 11, 13, 17, 19, 23, 17, ...

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 Especiais
Número deficiente, perfeito e quadrado perfeito
Divisibilidade
Máximo Divisor Comum (MDC)

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)

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
Congruência
Introdução
Congruência
Identidades
Congruência
Identidades
Atividades
Sugestão de estudo

Leitura:

Exercícios:

Desafios de Programação

Semana 10

  • Conteúdo
    • Teoria dos Números
    • Atividades
Material Didático cedido pelo Professor Marcos Lage