a是有理數,a*a+5和a*a-5都是有理數的平方,問a是多少?

來源:互聯網
上載者:User

主  題:   初中數學題,現在居然不會做,艾...
作  者:   renchao (阿超)
等  級:   
信 譽 值:   100
所屬論壇:   專題開發 資料結構與演算法
問題點數:   20
回複次數:   48
發表時間:   2004-12-15 8:22:00
  
  

a是有理數,a*a+5和a*a-5都是有理數的平方,問a是多少?

Top
 回複人:mathe() ( 一星(中級)) 信譽:105  2004-12-15 12:36:50  得分:10
?  

Let
u,v 滿足:
u^4-v^4=5w^2
Let b=2*u^2*v^2, c=u^4-v^4, d=u^4+v^4, 那麼
b^2+c^2=d^2
(b+c)^2+(b-c)^2=2d^2
而且10bc是完全平方數,
a^2=4bc/(10d^2)
就是一個解。
比如
u=3,v=1,w=4,b=18,c=80,d=82
a^2=4*18*80/(10*82^2),既a=12/41

Top
 回複人:mathe() ( 一星(中級)) 信譽:105  2004-12-15 12:41:07  得分:0
?  

還有兩種情況:
25u^4-v^4=w^2
b=10u^2v^2,c=w^2,d=25u^4+v^4
a^2=4bc/(10d^2)

u^4-25v^4=w^2
b=10u^2v^2,c=w^2,d=u^4+25v^4
a^2=4bc/(10d^2)
Top
 回複人:mathe() ( 一星(中級)) 信譽:105  2004-12-15 12:48:15  得分:0
?  

對於第一種情況,在1<=v<u<=100時,電腦上可以找到3組
u=3 ,v=1
u=5 ,v=2
u=49 ,v=31

Top
 回複人:mathe() ( 一星(中級)) 信譽:105  2004-12-15 12:53:49  得分:0
?  

對於第二種情況,在u<100時找不到解
第三種情況,u<100時,可以找到解
u=41,v=12

Top
 回複人:mathe() ( 一星(中級)) 信譽:105  2004-12-15 13:02:43  得分:0
?  

情況1:
u=3 ,v=1,a=48/41
u=5 ,v=2,a=2420/641
u=49 ,v=31,a=1470780864/3344161
情況3:
u=41 ,v=12,a=2270443224/3344161

Top
 回複人:mathe() ( 一星(中級)) 信譽:105  2004-12-15 13:21:34  得分:0
?  

u=5,v=2這組解是錯誤的,我的程式忘了判斷u%5!=0了。
還有a^2=(10d^2/4bc),我弄錯了。
u=3 ,v=1,w=4,a=41/12
u=49 ,v=31,w=984,a=3344161/1494696
情況3為:
u=41 ,v=12,a=3344161/1494696

Top
 回複人:mathe() ( 一星(中級)) 信譽:105  2004-12-15 13:46:15  得分:0
?  

呵呵,好像對於a=x/y是第一種的解:
u=x,v=y就是第三種的一個解。
比如對於第三種
取u=3344161,v=1494696,w=sqrt(u^4-25*v^4)=535583225279
d=249850594047271558364480641
a=2*u*v/d=5354229862821602092291248/249850594047271558364480641
:)
Top
 回複人:mathe() ( 一星(中級)) 信譽:105  2004-12-15 13:53:57  得分:0
?  

Right, 現在證明:
a=x/y是一組解,那麼u=x,v=y是第3組情況的一個解。
證明:
a^2+5是平方數,a^2-5是平方數
所以 (x^2+5y^2)/y^2, (x^2-5y^2)/y^2都是平方數
可以假設x^2+5y^2=z^2,x^2-5y^2=w^2
所以兩式相乘,得到x^4-25y^4=(zw)^2
所以(u,v)=(x,y)是第3組情況的一個解。

這樣,我們就可以得到無數組解 an=x(n)/y(n)
令x(0)=41,y(0)=12
w(n+1)=sqrt(x(n)^4-25y(n)^4)
x(n+1)=2*x(n)*y(n)*w(n+1)
y(n+1)=x(n)^4+25*y(n)^4

 

Top
 回複人:mathe() ( 一星(中級)) 信譽:105  2004-12-15 14:07:59  得分:0
?  

呵呵,現在介紹一下我的思路吧。
首先假設a=x/y (x,y是互素的兩個正整數)
a^2+5,a^2-5是有理數的平方數,也就是
x^2+5y^2,x^2-5y^2
同時是整數的平方數
假設
x^2+5y^2=s^2 (1)
x^2-5y^2=t^2 (2)
所以
s^2+t^2=2*x^2
容易看出,s,t必然同奇偶,然後我們可以算出
((s+t)/2)^2+((s-t)/2)^2=x^2, 所以(s+t)/2,(s-t)/2,x構成勾股數。
記b=(s-t)/2,c=(s+t)/2,d=x,帶入(1)-(2)式,得到
10y^2=4bc
所以4bc/10是完全平方數y
對於勾股數(b,c,d),我們只對它們互素的時候感興趣(不然,我們可以讓它們
除以公約數後,產生的結果是相同的),
所以我們只對b,c互素的情況感興趣,這時還要求10bc是完全平方數。
互素勾股數(b,c,d)總可以寫成:
b=2ef,c=e^2-f^2,d=e^2+f^2 (而且 (e,f)=1,e,f有一個是偶數)
10bc是完全平方數,b,c互素,這說明b,c除了2和5,其他的素因子都是偶數次的。
而c是奇數,可能的情況只有兩種:
i) 2b是平方數,5c是平方數:
對應e=u^2,f=v^2,u^4-v^4=5w^2
ii)10b是平方數,c是平方數:
對應兩種情況:
a) e=5u^2,f=v^2, 25u^4-v^4=w^2
b) e=u^2,f=5v^2, u^4-25v^4=w^2
現在看來最後一種情況最好用:)

Top
 回複人:mathe() ( 一星(中級)) 信譽:105  2004-12-15 15:29:19  得分:0
?  

呵呵,試著用perl算出前幾個:
#!/usr/bin/perl

use bigint;

$x=41;$y=12;

for($i=0;$i<5;$i++){
print $x."/".$y."/n";
$x4=$x*$x*$x*$x;
$y4=$y*$y*$y*$y;
$w=sqrt($x4-25*$y4);
$y=2*$x*$y*$w;
$x=$x4+25*$y4;
}
printf $x."/".$y."/n";

41/12
3344161/1494696
249850594047271558364480641/5354229862821602092291248
3896941041458487485320832722469963686366256264486004169772710584821176712668535259971051251201565099266561/167019439477564254804819333692197516475269570978824403519721702282259070147808848039273138602363503527584
230638590010706539951652691321765649797317978719005197091454474994023113316556896645962493695224042733508050711348929839333268975425076706190718571368114565832606037337885928582148352474750670120752040879724475690861404690501755223470675148558466585162549271212820769607274299304455313343106018882796786159139807494557321400648575572140308309262269361197814735557256648342299738920538361329361569876924074413836967285770241/19767429784718866858428085056283425785575398765734975231914495280262724097119223236553294311630565215390269665248942922978356332780412188755004235077262835815506659105445580231649936579080522908031488946828462887996197678521722654938999680797825342526121209669440715850601892780380379639408683936548011786316379398615750442050564981848672414014688547764279613609774414409259731125380750385761077840796163600017039055654208
2833435737297490372197833435326963031011684868637946461070150165351815684051896857032734093509190251236931974618010974047831439617560168336051239135360468509194806635383606057063242542377527694732400912783414569195121219399866379733874310913147798808870315117598525466321577071782488478996841467439022092578591426787030042647529170690189895236669405822307376193233209939124415047200783526043721600086580203772213866914414960602484904081658312252799769021742671703939462433931754193257193468238433273695405674024010013699111943438119813028314805072419123370003912794206239543211441787705192006023339949917389155547067875903545721835567229123227334210214625560816136228473866547695397510239813500352270340001556862596588359933623387011277862095031386301080279595017575377487859894553796941243877183594834494850134796497363395872530118686100493004066221158065896257554770345549879292461870319747970914438994556033263199665390148334995079164844163123017012067694759291552683061804267821821892984757143889007666024467493670548415688000103534837544499791471064867335475554872757877160675314174728313487701213697906708165794776813869983730394420655377711245227845467252381791972000646322543509016541673112529228404817217174969969794109809112545004118087290653919535225973781791241949910389603254394169591220155427807694344610954636252179332723801164610663706196099774821865222704303740590524079384980619233873583078823907109990272667152050948158368034219733933854644311145269802597079889889141250414294546964991702839252319017607008346004019848941380660128245767941322813678426281917128802784829943414552368492502338875078565454113121952788582626726738132273960519921035944352297884060612317224961/484711131535783727126354980997507925476027575994762383014966976404866420670014155822253835682226373456238586549131754244932006453032635755009108775719807358095851178888614833323768270947942578315357314827079372473711720859866961118451378105432785402830951070253101220097545141275339312394556922478756006475287342513075956327483140791798905493794206912556781361495169185809590765180555088119078926495436792684045723223058934482361827025929693146321708174983816930222111426115636749801104587708671628711513908125860998646056956479344394473748435247671218817669001453308990441393140954507303218699458515863131230504952787280024827512835941732214798364813175736590072530248670491725960482526330120087485913937743270932750135788105338289734435931972969680558157115681351723802675369077596063385920288724332205517811957033056844347755239374901162843181190037571540110146622737476648085806045421221349682385028770129792236253616376221612458230629154835049146977551380847174111153114997821439365086626639116886924326202557165019643592815381632797151202576204726439427770532132364608125920827495458310311956905247912252670137142323428111445688647644671104733771440378130690331261325971599081147870372117868040762031132905196084730182509396286055335239641664877478254987160092862844461337840615592126261048930903078955430063365235532540819323676404560100575034490954539804559554412463487712748741699416607821668867946804631531053499138781419644438556008417096271498372828235195092586675783276605693494360492677030480546070621305881032944421595735681584841250788977321232062332115750789757506185072358249632985199420525015217579673564177091342110545393225107737173694619284584456859375722332692945536

Top
 回複人:mathe() ( 一星(中級)) 信譽:105  2004-12-16 23:04:39  得分:0
?  

現在再證明一點:我上面列出三種方程:
其中第二種和第三種的解都必然可以用第一種表示:
比如對於第二種的一個解:
(x0,y0,s) 滿足
25x0^4-y0^4=s^2, 對應解:a=(25x0^4+y0^4)/(2x0y0s)
而且(x0,y0)=1,那麼5x0^2-y0^2同5x0^2+y0^2互素,所以它們都是平方數,假設
5x0^2-y0^2=w0^2
5x0^2+y0^2=z0^2
那麼z0^4-w0^4=5*(2x0y0)^2
所以u=z0,v=w0,w=2x0y0是第一種情況的一個解,
對應解為(z0^4+w0^4)/(2z0w0x0y0)=a
也就是通過第二種方式解出的解必然可以表示為第一種方式的解。
同樣通過第三種方式解出的解也可以表示為第一種方式的解

也就是說,只要第一種方程就足夠表示了。

反之,第一種情況的任意一個解,必然可以用第二種方式或者第三種方式表示(有且只能有一個)
比如解41/12就是屬於第二種的。(u=1,v=2)
而且我現在感覺對於第二種只有唯一一個解,對於第三種,所有的解都可以通過上面遞迴方式給出。
不過現在還沒有找到證明。
Top
 回複人:mathe() ( 一星(中級)) 信譽:105  2004-12-17 9:23:26  得分:0
?  

第二種情況的解也不是唯一的:
比如方程
25u^4-v^4=w^2
還有一組互素的解:u=2257,v=1562,w=25353117
可以得到
a=135699514816341/178761481355556

構造方法如下:
對於方程5u^2=4s^4+t^4的解,取u=u,v=2st
25u^4-v^4=(4s^4+t^4)^2-16s^4t^4=(4s^4-t^4)^2,所以取w=4s^4-t^4就可以了。
比如(u=2257,v=1562)是通過s=11,t=71得到的。
(u=1,v=2)是通過s=1,t=1得到的。
此外還有s=1,t=2和s=71,t=22它們計算出的a同上面兩個都相同。
現在我們知道第二種情況的解也不是唯一的。
如果能夠計算出第二種情況的所有解,然後把這些解作為初始值,帶入第三種情況進行迭代,就可以得到所有的第三種情況的解。

Top
 回複人:mathe() ( 一星(中級)) 信譽:105  2004-12-17 9:27:25  得分:0
?  

上面a算錯了,是642780541615689/178761481355556
Top
 回複人:mathe() ( 一星(中級)) 信譽:105  2004-12-17 9:47:20  得分:0
?  

呵呵,上面還是錯了。
現在通過先的第二種情況的解,我們又可以得到一系列情況3的解:
654686219104361/178761481355556
209239116668342644167838867143329714389679018137228536721441/93092380947563478644577555596900542802151091304399908363272
3794348487019039925749542059168247734797908973709179106909983896239377149515833243882286461568616348484744491510655657143661239022616957713454682013208875160676334692233507498261805795066141359230489600095452352932525466146406241929029761/243925260823291529729692315005448859561634050754936816805200100984783618700778962443357837295164825784916534061038440057954285176440604434211160839097473045564824135067123979950653214644895642133945988446008361351138718118630288888299024
207364430083289887306917248265176096518857981645462902868504798091754202260825583409895319188959462224847241752421626616161014877081435692849550193568633125665218149739525971640532334126691439163268851475907330790423611818390279300970707752287358942865876973376416469872280909079124665236320464139770291310201031642325408470721770267276253966505707135540099621647613354081934352911374127888639261077350989546158309363721959849792305514886953186022569732775857920051066563004090503605311935911100676458947187615329444701352956338573403802250756630773471486838493527994952130506437946300399125284844254413703199511309112933692340207491327621738540087619615083094972358297721192466233971637302656412523830838006230481887378890733258867510300963866643548479762304024122921630162372461667746643087564321981902980377028464770617242777938822749701936328198597103934224252113495873023654064678697677964175011710840299369622725954114597052926897871242374423041/26644383802526085744736421561294879699078713412473603781719070365535395480804939427471215230954946855798217099140387691275068944060152676069185175625835014006276422698858368042149591070592802546370017881232658654576464938019395755758723833216303735337625436919230945425551994053339428713070338053858734395865556171114199370053806875871908434203621185200134663913270135894619064154902731070694972954897378064428990436567474775231571765781337305138157197761032225105822159467642761014814353792431577288404876299838410751098610182295620157698893880893757984174256863783537769845204811841153546311055179606836840483382053981507812161318144115951830344446282026503222639918768351610920016013464315564009129936810512708692217363784821751276945062637083362385939467482936171236750565570393814191165165321790194941688892523213651298340456214328948603289527126670400768158455561820051575667870780119348107038276522331491132104127354654321229553096086284063712

Top
 回複人:mathe() ( 一星(中級)) 信譽:105  2004-12-17 19:45:55  得分:0
?  

現在來個匯總,說明一下該如何解決這個問題:
第一步:
通過電腦搜尋方程
5u^2 = 4*s^4+t^4 (t為奇數)
的解。 現在我直搜尋到兩組解(s=1,t=1和s=11,t=71)
第二步:
對於每組第一步得到的(s,t,u)取v=2st,w=4s^4-t^4,d=25u^4+v^4,
我們可以得到一組解a=d/(2uvw)
第三步:
對於第二步或者第三步得到的每個解a=d/(2uvw)=p/q (化成即約方式,可以減少後面的計算量),
取u=p,v=q,u^4-25v^4是平方數,取 w=sqrt(u^4-25v^4),d=u^4+25v^4,
我們可以得到一組解a=d/(2uvw).

而且如果第一步我們能夠找到方程5u^2=4*s^4+t^4的所有解,通過這種演算法我們可以找到所有可能的a.
Top
 回複人:mathe() ( 一星(中級)) 信譽:105  2004-12-18 19:32:28  得分:0
?  

關於方程:5u^2 = 4*s^4+t^4
我又得到兩組解
t=892225,s=2493275

t=11045611921
s=5822032439
通過它們,我們可以得到第二種情況另外兩個解(肯定分子分母都巨大無比)。

可以通過下列方式得到更多5u^2=4*s^4+t^4的解
搜尋方程:
25A^4+30A^2*B^2+B^4=W^2
Let P1=B/A
P2=(-2P1+sqrt(25+30*P1^2+P1^4))/(1+P1^2)=D/C
那麼P1,P2都是有理數
Let m=B*D,n=A*C
t=m^2-25n^2+10mn
s=m^2-25n^2
就是一個解。
方程25A^4+30A^2*B^2+B^4=W^2
我搜尋到三個解:
A=1,B=6,C=1,D=1;
A=6,B=5,C=61,D=185;
A=588,B=1271,C=37,D=61;
其中A=1,B=6,C=1,D=1對應s=11,t=71.

Top
 回複人:mathe() ( 一星(中級)) 信譽:105  2004-12-18 22:06:37  得分:0
?  

呵呵,25A^4+30A^2*B^2+B^4=W^2的下一個解中
B=1562*5283=8252046
再下一個為
B=3344161*113279=378823213919
任取兩個平方數u2,v2,分別讓m,n取5u2+v2和5u2-v2 (如果是負數取相反數,可以m取和,n取差,也可以m取和,n取差),如果2m^2-n^2 是平方數(或者平方數的相反數),那麼
B=mn,A=2*m^2-3mn+n^2

Top
 回複人:mathe() ( 一星(中級)) 信譽:105  2004-12-19 9:31:04  得分:0
?  

方程25A^4+30A^2*B^2+B^4=W^2的解也可以通過遞迴來計算。
設 (A,B)是上面的一組解,那麼:
記s=5A^2-B^2,t=5A^2+B^2
B'=st
A'=sqrt((s^4-3*s^2*t^2+2*t^4)/5)
就是一組解,如A=1,B=6,可得,A'=588,B'=-1271
下面給出方程的前幾個解:
A=1,B=6
A=588,B=-1271
A=7066924182696,B=378823213919
A=1339292487821310144844876208030955730130705238172848,B=62353608713680834676537482331752184610397022133175679
A=653847017052681596985858386354972304592004671926407283004142638688138544810228375879362674859384259102583909848347601781674930175841262966955807108200483322024747022729914713948712732290509718978030014591911584,B=-15116249878927084323082375162074881670718984563501618492997336351956894910033543773404638070549516482211174394094412444035050568807695310556722764118509673769328904184606696785693209474773808545042791608377633281
A=4642102823897693968460880211990481491126387340980503652403394793038199360975204789102998089937767391669497789716199275804782225247129170511061073666415512302917558851804345309213156589028523818499010516153110429962372759836269753415362990392343912287388310595878272971393481519848494416249430528956335963879011088620487075868391470709309530504555454394533473595643680508732063330558506185278015420706803630031879900826374428372969236088723501865519113349502887061629838682028723727496983670355565514459845529671847440509267954219855800161884600307837862521859132037659764592001328267359941993377942108539506027174786281275282368759939289085775132058996906116958661975415731806988624526139864471175664697141115466536614068698117406130915496629582710338362777986947371533584452248934365105221630774112465836888546887782034074363371470875489471808,B=-52208142508226584564173148081824184622796492490012921884102603428039998024667098090942066752817503946085834495109712498509322180691350504118697014043994522006040322430484406865169840472033747250005425611840359802659706692164411537879783652943136669530328945171621517833179116752493788903569544954617184781753660345476698103495495235837073175550434239219078247949237285297580430236298658725601259776113575227210593124620210692737806075248751026499229004496981617259782653170634944495728332537161881089178751267100111650123518456044586524835170101071553519531832651134630332923118289908189925873653359747207200457072345083593516713324599128689711857171370066198469952662623619945603909198350050446768272429011931324212842579192401311217845195311534508896184529021138162592392309767443140901198829889474726851089155904307179846768135109890442373121

對應的perl程式:
#!/usr/bin/perl

use bigint;
$A=1;
$B=6;

for($i=0;$i<6;$i++){
print "A=".$A.",B=".$B."/n";
$s=5*$A*$A-$B*$B;
$t=5*$A*$A+$B*$B;
$B=$s*$t;
$u=$s*$s*$s*$s-3*$s*$s*$t*$t+2*$t*$t*$t*$t;
$u=$u/5;
$A=sqrt($u);
$s=$A * $A;
print "Error/n" unless ($s eq $u);
}
printf "A=".$A.",B=".$B."/n";

Top
 回複人:mathe() ( 一星(中級)) 信譽:105  2005-1-4 8:39:06  得分:0
?  

如果用c語言寫上面的代碼,太複雜了,主要是c裡面不支援任意長度的整數。
(通常c語言提供的整數不超過2^64).
其實上面的perl程式很簡單的。
第一行
#!/usr/bin/perl
用處不大,是在Linux下面告訴電腦這個檔案是perl指令碼。
下一行:
use bigint;
相當於c裡面的標頭檔,告訴電腦,要使用任意精度的超大整數,這樣,後面所有的變數
都可以使用任意長度的整數了。
而程式裡面我只使用了for迴圈,通c的文法也是一致的。
唯一區別是在perl裡面,所有的變數名稱都要以$開頭,而且變數使用之前都不需要聲明。
函數print用來輸出內容到標準輸出(就是c中的stdout)
print "Error/n" unless ($s eq $u);
其實就是c中 if( $s != $u){
printf("Error/n");
}
eq 是表示相等。
Top
 回複人:DiabloWalkOnTheEarth(毀滅小符 (Annihilus)(99)(3502)) ( 二級(初級)) 信譽:100  2005-1-6 15:36:33  得分:0
?  

mathe是超高手啊,mathe程式對應的cpp版,用cryptlib

#include <cryptlib/integer.h>
#include <iostream>
using namespace std;
using namespace CryptoPP;
/*
#!/usr/bin/perl

use bigint;
$A=1;
$B=6;

for($i=0;$i<6;$i++){
print "A=".$A.",B=".$B."/n";
$s=5*$A*$A-$B*$B;
$t=5*$A*$A+$B*$B;
$B=$s*$t;
$u=$s*$s*$s*$s-3*$s*$s*$t*$t+2*$t*$t*$t*$t;
$u=$u/5;
$A=sqrt($u);
$s=$A * $A;
print "Error/n" unless ($s eq $u);
}
printf "A=".$A.",B=".$B."/n";
*/

int main()
{
IntegerA = 1 , B = 6 , s , t , u;

for( int i = 0; i < 6; ++i )
{
cout << "A= " << A << " , B= " << B << endl;
s = 5 * A * A - B * B;
t = 5 * A * A + B * B;
B = s * t;
u = s * s * s * s - 3 * s * s * t * t + 2 * t * t * t * t;
u /= 5;
A = u.SquareRoot();
s = A * A;
if( s != u )
{
cerr << "Error" << endl;
break;
}
}
}
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.