二次方程

題目詳情

二次方程與二次函數是我們中學最重要的內容了,不過古人剛開始研究二次方程時最關心的還是二次方程的整數解。所以我們就來研究一下二次方程的整數解問題。

現給定N,P,N爲32爲整數,P爲不超過100000的素數,問在N內的正整數中是否存在n,n,p互素,使得存在整數k,滿足x^2-n-kP=0有整數解,若存在,請找出有多少個。

輸入 N ,P。

輸出 sum ,sum爲使得滿足上述條件的n的總的個數。



答題說明

輸入案例:

3 3

輸出案例:

1


思路: 這種題,我做的時候感覺就是在碰運氣,不停的把公式變來變去,嘿,剛好變成我想要的了。

由於p是素數,且n,p互素,所以n=k*p + b,其中0<b<p, k爲整數,那麼

          x^2 - n - k * P = x^2 - k1 * p - b - k2 * p = x^2 - (k1 + k2) * p - b = 0, 

由於k1與k2是任意的,所以

         x^2 - n - k *  p = x^2 - k * p - b = 0,即 x^2 = k * p + b,

即(x^2)% p = b, 現在要求的就是b,對於某個b, n裏面的正整數個數就是(n - b) / p + 1, 

其中b <= n,假設x = r * p + t, 其中0<t<p, 則(x^2)% p = (t * t)% p = b,現在就可以暴

力枚舉t(0到p,開區間)求得所有可能的b,   


代碼如下:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章