我要利用Borland C++ Builder來寫一MOD運算式如下:
(e*d) mod m = 1
讓使用者輸入e和m
程式跑出d來
請各位給點靈感和方向
讓我去Try & Debug
謝謝!
2007-02-09 15:11:14 · 3 個解答 · 發問者 KEIGO 1 in 電腦與網際網路 ➔ 程式設計
基本上
1. e, d, m 都是整數值
所以你可以宣示它們都是整數即可
2. 可能會無解
如果 e, m 不是互質 就無解
3. 可能會有無限多解
如果你能找到一組解 它就有無限多解
4. 最小的正整數解在 [ 1, m-1] 區間
所以 你是可以用 (m-1) / e 來找 d
但是 既然你要練習
我建議你用 for loop 去試
(a) 什麼情況下無解
(b) 找到一組解後 如何離開 for loop
(c) 找到一組解後 如何列出更多解
如果有問題, 請來函討論. 不然, 我可能會錯失你再補充的疑點.
2007-02-09 23:56:04 · answer #1 · answered by JJ 7 · 0⤊ 0⤋
原式 (e*d) mod m = 1
等同為 e*d-1 = m*n , n>=0
所以 d = (m*n+1) / e
m, e 為使用者輸入
用一個 loop ,
n=0 , 每一次 n++ 代入上面的式子求解即可
2007-02-14 08:12:38 · answer #2 · answered by ? 5 · 0⤊ 0⤋
//Example.cpp
#include
#include
void main()
{
// (e*d) mod m = 1
float e , d , m ;
printf("功式 ( e * d ) mod m = 1\n");
printf("請輸入 e 值:");
scanf("%f", &e);
printf("請輸入 m 值:");
scanf("%f", &m);
d = (m - 1) / e ;
printf(" d 值為%.2f", d);
system("PAUSE");
}
2007-02-09 21:23:57 · answer #3 · answered by 想 3 · 0⤊ 0⤋