2011-01-10 3 views
2

シンボル=基本的に、最初の二つの式が与えられると、第三のを見つけるそして同時モジュラ方程式を解くコードはありますか?ここ

(1) n = a mod j 
(2) n = b mod k 

(3) n = c mod l 

場合

"と合同である" を意味するために使用されます。私の目的のために、解決策が存在することを事前に知っています。

CまたはC++のコードを私のために、またはライブラリやC/C++プロジェクトで使用できるものへのリンクにしたいと思います。ありがとう。

+0

あなたはあまりにも多くの未知数を持ち、そのシステムを解くのに十分な方程式を持たないようだ... –

+0

@マーク:おそらく 'n 'と' c'は唯一の未知数です。 'j'、' 'k''、' 'l''が互いに素であるならば、まだ未知数が多いかもしれません。 –

+0

私はここで少し不明であることが分かります。n、a、b、j、kはすべてわかっています。唯一の未知数はcとlです。申し訳ありません。 – Goofy

答えて

1

ここでは無限の算術演算シーケンスを表すライブラリが役に立ちますが、私は個人的にはわかりません。それにもかかわらず、ここでは、各与えられたモジュラー方程式から基本的にnの可能性を生成し、交差を見つけるブルートフォースの解法があります。それは、「飛躍-frogging」(擬似コード)によってnの最低値を検索:翻訳はかなり簡単でなければなりませんが、

value_left := a 
value_right := b 

while value_left != value_right: 
    if value_left < value_right: 
     value_left := value_left + j 
    else: 
     value_right := value_right + k 
    end if 
end while loop 

return value_left % l // as in "leggo-mah-eggo!" 

は、あなたが実際のCコードをご希望の場合は、私に教えてください。

5

もしa、b、j、kが与えられ、l = jk、gcd(j、k)= 1ならば、Chinese Remainder Theoremを使ってcを見つけることができます。 (jとkが重大ではないGCDを持つ場合、解cは存在するかもしれないし、存在しないかもしれない)

関連する問題