-1
我想創造我afinne代碼的互質:互質
static void Main(string[] args)
{
string input = "";
string openMessage = "";
openMessage = openMessage.ToUpper();
string cryptedMessage = "";
int a;
int b;
int m;
Console.WriteLine("Enter the modular size of the alphabet:");
input = Console.ReadLine();
m = int.Parse(input);
Console.WriteLine("Enter first value for encrypting the message:");
input = Console.ReadLine();
a = int.Parse(input);
while(a!=0 && m !=0)
{
if (a > m)
{
a %= m;
} else
{
m %= a;
}
}
Console.WriteLine("Enter second value for encrypting the message:");
input = Console.ReadLine();
b = int.Parse(input);
Console.WriteLine("Enter the message you want to encrypt:");
input = Console.ReadLine();
openMessage = input.ToUpper();
foreach (char letter in openMessage)
{
int letterNumber = (int)letter;
letterNumber = (a * (letterNumber - 65) + b) % m; //Afinne Cipher math
letterNumber = letterNumber + 65;
char encryptedLetter = (char)letterNumber;
cryptedMessage = cryptedMessage + encryptedLetter;
}
Console.WriteLine(cryptedMessage);
}
有沒有人有一個建議,如何做到這一點?
我想比較int m
和int a
。我擡頭看谷歌,發現this,但看起來很難實現我的代碼。
GCD的歐幾里得算法很容易實現。你爲什麼覺得很難? –
因爲我仍然是編碼初學者 –
https://rosettacode.org/wiki/Greatest_common_divisor –