OneCompiler

AVALIAÇÃO P2 (continuação)

138
NOME:Matricula:
Esther Sena Martins211062769

Observações:

A seguir listarei as 3 questões restante da prova P2, deixando informado aqui que, todas as questões terão 2 links, sendo um com entrada no terminal aberta (na qual a professora poderá colocar valores que desejar), e outro com valores fixos (sendo nescessário somente rodar o código).

Questão 9:

Desenvolver um código que calcule sistemas de congruência linear de até 4 equações
utilizando o teorema chinês do resto (linguagens C ou C++)

LINKS

Código de entrada livreCódigo com valores fixos
https://onecompiler.com/c/436cj8zrnhttps://onecompiler.com/c/436cnxccf

Breve explicação sobre o código

1. Entradas: O programa lê o número de equações (n) e os pares a[i], m[i].

2. Verificação de Coprimos: Antes de resolver, verifica se os m[i] são coprimos. Se não forem, o teorema não pode ser aplicado.

3. Cálculos do TCR: A função chinese_remainder aplica o algoritmo do TCR:

  • Para cada equação, calcula o termo parcial:

                      termo=a[i].Mi.Mi−1
    
  • Soma esses termos ao resultado final.

4. Saída: O resultado final result mod 𝑀 é o menor número x que satisfaz todas as congruências.

5. Exemplo de Entrada:

Número de equações: 3
Valores de a[i] (resto) e m[i] (módulo): 2 3
Valores de a[i] (resto) e m[i] (módulo): 3 4
Valores de a[i] (resto) e m[i] (módulo): 1 5

Soma dos termos: 80+135+36= 251.
Resultado final: 251mod60= 11.

   3
  2 3
  3 4
  1 5 

Questão 10:

**- Desenvolver um código que calcule a criptografia RSA, no qual o usuário irá definir os primos
(p e q) , número E e o tamanho do bloco. Definir um pré-código com o alfabeto iniciando em A =11, como mostrado em aula (linguagens C **

LINKS

Código de entrada livreCódigo com valores fixos
https://onecompiler.com/c/436crzemghttps://onecompiler.com/c/436ctgjab

Breve explicação sobre código

1. Entradas do Usuário:

  • ppp e qqq: Números primos.

  • eee: Chave pública.

  • Tamanho do bloco e a mensagem a ser criptografada.

2. Cálculos do RSA:

  • n=p×qn = p \times qn=p×q.

  • ϕ(n)=(p−1)×(q−1)\phi(n) = (p-1) \times (q-1)ϕ(n)=(p−1)×(q−1).

  • Verifica se eee é coprimo com ϕ(n)\phi(n)ϕ(n).

  • Calcula ddd, a chave privada, como o inverso modular de eee mod ϕ(n)\phi(n)ϕ(n).

3. Codificação e Criptografia:

  • A mensagem é convertida em números usando A=11,B=12,...,Z=36A = 11, B = 12, ..., Z = 36A=11,B=12,...,Z=36.

  • Os números são encriptados usando c=memod  nc = m^e \mod nc=memodn.

4. Decriptação e Decodificação:

  • Os números encriptados são decriptados usando m=cdmod  nm = c^d \mod nm=cdmodn.

  • Os números resultantes são convertidos de volta para texto.

5. Exemplo de Entrada:

Números primos p e q: 17 19
Número E (chave pública): 5
Tamanho do bloco: 1
Mensagem (apenas letras maiúsculas e espaços): HELLO

 17 19
5
1
HELLO 

Questão 11:

**- Desenvolver um código que calcule o CPF e o ISBN de um livro, utilizando as regras de
congruência (linguagens C **

LINKS

Código de entrada livreCódigo com valores fixos
https://onecompiler.com/c/436cujhrdhttps://onecompiler.com/c/436cu87gs

Breve explicação sobre código

Cálculo do CPF

1. Regra de Formação:

  • O CPF tem 9 dígitos iniciais e 2 dígitos verificadores.

  • Para calcular o 1º dígito:

  • Multiplica-se cada um dos 9 primeiros dígitos por pesos decrescentes de 10 a 2.

  • Soma-se os resultados.

  • O resto da divisão da soma por 11 é usado para calcular o dígito verificador:

  • Se resto<2\text{resto} < 2resto<2, o dígito é 0.

  • Caso contrário, o dígito é 11−resto11 - \text{resto}11−resto.

  • O 2º dígito é calculado da mesma forma, agora incluindo o 1º dígito verificador.

2. O que acontece no Código:

  • Regra de Formação Cálculo do CPF :

O array cpf tem os 9 primeiros dígitos.
A função calcula_digito_cpf calcula os dois dígitos verificadores.

  • Regra de Formação Cálculo do ISBN-10 :

O ISBN-10 tem 9 dígitos iniciais e 1 dígito verificador.
Multiplica-se cada dígito por seu índice (de 1 a 9).
Soma-se os produtos.

  • Regra de Formação do dígito verificador:

O dígito verificador é o resto da divisão da soma por 11:
Se for 10, representa-se como X.

3. Exemplo de Entrada:

CPF: 971.234.567-00
ISBN: 074798210X

  971.234.567-00
 074798210X 

OBS FINAL: Todos os códigos estão públicos de modo acessível, todos os links a cima funcionam. Espero que esteja tudo certo e de forma clara, deixei dois tipos de entradas (Livre e Fixa), para facilitar. Obrigada :D :)