求兩個數最大公約數pascal語言

時間 2021-12-23 08:14:26

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和855兩個數的最大公約數?什麼方法

艾康生物 先對兩個數分別分解質因數 1125 5 5 5 3 3 855 5 3 3 19 然後將兩個數相同的質因數相乘,則為最大公約數5 3 3 45 路人甲大先森 算最大公約數有個技巧,就是10以內演算法,我只知道一個不算最直觀的演算法,你看看可不可以 以你給的兩個數為例,首先兩個數尾數都是5,...

c語言求輸入ab求這兩個數的最大公約數和最小公

烏托邦之神 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...