private void buttonHitungCRT_Click(object sender, EventArgs e) { if (dataGridViewCRT.RowCount > 0) { long a = Convert.ToInt32(dataGridViewCRT["number", 0].Value); long b = Convert.ToInt32(dataGridViewCRT["divisor", 0].Value); long lcm = b; for (int i = 1; i < dataGridViewCRT.RowCount; i++) { DataGridViewRow row = dataGridViewCRT.Rows[i]; long num = Convert.ToInt64(row.Cells["number"].Value); long div = Convert.ToInt64(row.Cells["divisor"].Value); lcm = Kripto.LCM(lcm, div); long x = num - a; long inv = Kripto.InversModulo(b, div); x *= inv; x %= div; a += b * x; b *= div; } if (a < 0) { a += lcm; } textBox1.Text = "Hasil = " + a; /* * int n = dataGridViewCRT.RowCount; * long[] arrNum = new long[n]; * long[] arrDiv = new long[n]; * for (int i = 0; i < n; i++) * { * arrNum[i] = Convert.ToInt32(dataGridViewCRT["number", i].Value); * arrDiv[i] = Convert.ToInt32(dataGridViewCRT["divisor", i].Value); * } * textBox1.Text += " " + Kripto.ChineseRemainderTheorem(arrNum, arrDiv); * //*/ } else { textBox1.Clear(); } }