1樓:
這個寫的不夠全面,不過演算法思路是正確的
這是用的輾轉相除法
例如24和60的最大公約數是6
那麼兩數應該都是6的倍數
那麼兩數相除所得的餘數也應該是6的倍數
即12為6的倍數
與這個一樣
設a與b的最大公約數是k
a>b那麼a mod b也一定是k的整數倍
然後用迴圈算直到b=0,此時a的值就是k
不懂得地方可以問我,真誠的幫助你解決問題
2樓:
這是輾轉相除法,要遞迴的,你打錯了,至於演算法你要看看《初等數論》
3樓:匿名使用者
輾轉相除法是求最大公約數最簡單的方法,也是最煩的方法。
題目中這一步應放在while或repeat..until語句中。解釋可以用f7一步一步推。
附我編的(我用a,b,r):
vara,b,r:integer;
begin
readln(a,b);
r:=a mod b;
while r<>0 do
begin
a:=b;
b:=r;
r:=a mod b;
end;
writeln(b);
end.
b就是最大公約數
pascal語言字串題目
1.program sdf var a string s,i,j longint begin readln a while a do begin s 0 j 0 for i 1 to length a doif a i in 0 9 then j j 10 ord a i ord 0 else be...
PASCAL程式設計問題C語言程式設計問題
program tm1 var a,b array 1.1000 of integer i,j,k,m integer begin k 1 for i 2 to 1000 do begin for j 2 to i 1 do begin if i mod j 0 then begin a i a i...
pascal回溯pascal回溯
var a array 1.20,1.20 of integer s set of 1.20 min,sum,n,i,j integer procedure work r integer var i integer begin for i 1 to n do if not i in s then b...