1樓:你好
hvar a,b,c:longint;
begin
write('a,b=');
readln(a,b);
while b>0 do begin
c:=a mod b;
a:=b;
b:=c;
endwrite(a);
end.
這是用while語句的。
2樓:羅不理
var a,b,c,d:integer; 定義四個變數;
begin
read(a,b);
if abegin
c:=a;
a:=b;
b:=c;
end;
if (a mod b<>0) or (b mod a<>0) then 如果不能整除那麼進行迂迴演算法
begin
d:=a mod b;
a:=b;
b:=c;
endelse
if a mod b=0 then 考慮到每個數能整除用兩個判斷writeln(b)
else
if b mod a=0 then
writeln(a);
writeln(b);
end.
pascal求最大公約數
3樓:遊海穎
求兩個整數的最大公約數(輾轉相除法)
程式如下:
varm , n : integer;
function fac(i, j:integer):integer;
begin
if j=0 then begin fac:=i;exit;end;
fac:=fac(j ,i mod j);
end;
begin
readln(n, m);
writeln(fac(n,m));
end.
或var
a,b:integer;
procedure qw(a,b:integer);
varv:integer;
begin
if a mod b=0 then writeln(b)else if b mod a=0 then writeln(a)else
begin
v:=a;
a:=a mod b;
b:=b mod v;
qw(a,b);
end;
end;
begin
readln(a,b);
qw(a,b);
readln;
end.
4樓:
把第3行的1..n改為1..10(要一個定值,在var下的都是變數,他會認為你的陣列相當的大,超過了計算機能處理的範圍)
pascal語言:用」遞迴演算法」求2個自然數的最大公約數與最小公倍數
5樓:匿名使用者
program zjh;
varn,m:longint;
procedure try(l,r:longint);
vari:longint;
begin
if l mod r=0 then begin writeln(r,' ',n*m div r); halt; end;
i:=l mod r;
try(r,i);
end;
begin
readln(n,m);
try(n,m);
end.
6樓:千年的九尾狐
varx,y:integer;
i:integer;
procedure gys;
begin
i:=i-1;
if (x mod i=0) and (y mod i=0) then writeln(i)
else gys;
end;
procedure gbs;
begin
i:=i+1;
if (i mod x=0) and (i mod y=0) then writeln(i)
else gbs;
end;
begin
write('請輸入兩個整數:');
readln(x,y);
i:=x;
i:=i-1;
gys;
i:=i+2;
gbs;
readln;
end.
求兩個數最大公因數和最小公倍數 pascal語言
7樓:匿名使用者
你好!!! 程式如下:program ex1;
var n,a,b,i,j,gongyueshu,gongbeishu:longint;
begin
readln(a,b);
if (a<=0)or(b<=0) then exit;
if a>=b then
begin
n:=a;
j:=b;
endelse
begin
j:=a;
n:=b;
end;
for i:=n downto 1 do
begin
if (a mod i=0)and(b mod i=0) then
begin
gongyueshu:=i;
break;
end;
end;
if gongyueshu=1 then gongbeishu:=a*b;
if gongyueshu=j then gongbeishu:=n;
if (gongyueshu<>1)and(gongyueshu<>j) then gongbeishu:=j*gongyueshu;
writeln('gong yue shu:=',gongyueshu,' gong bei shu:=',gongbeishu);
readln;
end.
我來說明下
公約數演算法:
從兩數中最大數開始直到1 最大數為n (因為最大公約數不超過最大數!)
如果a和b同時整除i 就賦值 gongyueshu:=i; (整除i 因為是for迴圈 i會變
而n是最大數 不變 所以是i)
公倍數演算法:
已經算了公約數
考慮了3種情況:
1. a=b 如 7 7
公約數是等於公倍數 所以gongbeishu:=gongyueshu;
2. a與b公約數為1 如 3 7
所以公倍數等於兩數相乘 gongbeishu:=a*b;
3. 公約數在》1和 所以 公倍數等於公約數乘最小數 即j gongbeishu:=j; 最後輸出 敲下回車退出 教你一種方法 先複製我寫的程式 開啟free pascal 點new 選單中點edit 再點paste from windows 貼上進去 程式沒錯 希望能夠幫助你!! 艾康生物 先對兩個數分別分解質因數 1125 5 5 5 3 3 855 5 3 3 19 然後將兩個數相同的質因數相乘,則為最大公約數5 3 3 45 路人甲大先森 算最大公約數有個技巧,就是10以內演算法,我只知道一個不算最直觀的演算法,你看看可不可以 以你給的兩個數為例,首先兩個數尾數都是5,... 烏托邦之神 include void main printf 最大公約數為 d n i m0 m while 1 printf 最小公倍數為 d n m0 你可以拿這個程式嘗試一下,我寫的。以前寫的,你自己琢磨吧!c語言程式設計求輸入兩個數的最大公約數和最小公倍數,怎麼做? 餡嘍嘍嘍 輸入兩個正整數... 另一個互不相同 42 105 這推理夠嚴密了,即為甲乙丙丁。這4個最小是30。同理 5,且z不是丙的因數 y 而甲乙丁又至少有另一個共有的質因數z。假設總共僅有4個質因數,設它是y 此時可知乙丙至少有兩個共有的質因數x 7。由於一般性,這4個整數中任意兩數都有這樣的關係,他們至少有一個共有的質因數x...計算兩個數的最大公約數,比如1125和855兩個數的最大公約數?什麼方法
c語言求輸入ab求這兩個數的最大公約數和最小公
最大公約數問題