Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Codes_Maker
- {
- public class FiniteFieldsMath
- {
- /// <summary>Сложение по модулю p.
- /// </summary>
- public static int Addition(int p, int x, int y)
- {
- return (x + y) % p;
- }
- /// <summary>Умножение по модулю p.
- /// </summary>
- public static int Multiplication(int p, int x, int y)
- {
- int result = 0;
- result = (x * y) % p;
- if (result < 0) result = result + p;
- return result;
- }
- /// <summary>Вычитание по модулю p.
- /// </summary>
- public static int Subtraction(int p, int x, int y)
- {
- int result = 0;
- result = (x - y) % p;
- if (result < 0) result = result + p;
- return result;
- }
- /// <summary>Деление по модулю p.
- /// </summary>
- public static int Division(int p, int x, int y)
- {
- return Multiplication(p, x, Inversion(p, y));
- }
- /// <summary>Нахождение обратного элемента по модулю p.
- /// </summary>
- public static int Inversion(int p, int x)
- {
- int temp = 0, result = 0;
- for (int i = 1; i < p - 1; i++)
- {
- temp = Multiplication(p, x, i);
- if (temp == 1) result = i;
- }
- return result;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement