1樓:匿名使用者
#include "stdio.h"
void main()
2樓:林柯伊南
#include"stdio.h"
main()
while (m%n!=0)
a=a/n;b=b/n;q=a*b*n;
printf("兩數最大公約數為
%d,最小公倍數為 %d\n",n,q);}
3樓:匿名使用者
if (n>m)
while (m%n)
演算法就是用輾轉相除法求最大公約
數演算法描述:
m對n求餘為a, 若a不等於0
則 m <- n, n <- a, 繼續求餘否則 n 為最大公約數
4樓:桔聚聚
還要考慮如果m/n等於零的情況
輸入兩個正整數m和n,求其最大公約數和最小公倍數?(用c語言)
5樓:匿名使用者
演算法描述:
m對n求餘為a, 若a不等於0
則 m <- n, n <- a, 繼續求餘
否則 n 為最大公約數
最小公倍數 = 兩個數的積 / 最大公約數
#include
int main()
printf("greatest ***mon divisor: %d\n", n_cup);
printf("lease ***mon multiple : %d\n", m * n / n_cup);
} else printf("error!\n");
return 0;
} ★ 關於輾轉相除法, 搜了一下, 在我國古代的《九章算術》中就有記載,現摘錄如下:
約分術曰:「可半者半之,不可半者,副置分母、子之數,以少減多,更相減損,求其等也。以等數約之。」
其中所說的「等數」,就是最大公約數。求「等數」的辦法是「更相減損」法,實際上就是輾轉相除法。
輾轉相除法求最大公約數,是一種比較好的方法,比較快。
對於52317和75569兩個數,你能迅速地求出它們的最大公約數嗎?一般來說你會找一找公共的使因子,這題可麻煩了,不好找,質因子大。
現在教你用輾轉相除法來求最大公約數。
先用較大的75569除以52317,得商1,餘數23252,再以52317除以23252,得商2,餘數是5813,再用23252做被除數,5813做除數,正好除盡得商數4。這樣5813就是75569和52317的最大公約數。你要是用分解使因數的辦法,肯定找不到。
那麼,這輾轉相除法為什麼能得到最大公約數呢?下面我就給大夥談談。
比如說有要求a、b兩個整數的最大公約數,a>b,那麼我們先用a除以b,得到商8,餘數r1:a÷b=q1…r1我們當然也可以把上面這個式子改寫成乘法式:a=bq1+r1------l)
如果r1=0,那麼b就是a、b的最大公約數3。要是r1≠0,就繼續除,用b除以r1,我們也可以有和上面一樣的式子:
b=r1q2+r2-------2)
如果餘數r2=0,那麼r1就是所求的最大公約數3。為什麼呢?因為如果2)式變成了b=r1q2,那麼b1r1的公約數就一定是a1b的公約數。
這是因為一個數能同時除盡b和r1,那麼由l)式,就一定能整除a,從而也是a1b的公約數。
反過來,如果一個數d,能同時整除a1b,那麼由1)式,也一定能整除r1,從而也有d是b1r1的公約數。
這樣,a和b的公約數與b和r1的公約數完全一樣,那麼這兩對的最大公約數也一定相同。那b1r1的最大公約數,在r1=0時,不就是r1嗎?所以a和b的最大公約數也是r1了。
有人會說,那r2不等於0怎麼辦?那當然是繼續往下做,用r1除以r2,……直到餘數為零為止
6樓:匿名使用者
#include
void main()
a=c;b=d;
while(b!=0)
printf("最大du
公約數zhi是:
dao回%d\n",a);
printf("最小公倍答數是:%d\n",c*d/a);}
7樓:背心_心背
^int ***(int, int); //兩個制數的最大公約數
int n***(int *, int) //n個數的最大公約數int lcm(int, int) //兩個數的最小公倍數int nlcm(int *, int) //n個數的最小公倍數int ***(int a, int b)int c;
while((c = a % b) != 0) //輾轉相除return b;
}int n***(int * pa, int n)int lcm(int a, int b) //最大公倍數 = 兩數乘積 / 最大公約數
int nlcm(int * pa, int n)
c語言程式設計,輸入兩個正整數m和n,求其最大公約數和最小公倍數?
8樓:匿名使用者
#include
int main()
a = num1;
b = num2;
while(b!=0)
printf("gongyueshu:%d\n",a);
printf("gongbeishu:%d\n",num1*num2/a);
}擴充套件資料:
c語言迴圈控制語句
一、while語句
1、計算while後面括號裡表示式的值,若其結果非內0,則轉容入2,否則轉3
2、執行迴圈體,轉1
3、退出迴圈,執行迴圈體下面的語句。
由於是先執行判斷後執行迴圈體,所以迴圈體可能一次都不執行。
二、do...while語句
1、執行迴圈體,轉2
2、計算while後面括號裡表示式的值,若其結果非0,則轉入1,否則轉3
3、退出迴圈,執行迴圈體下面的語句。
9樓:逮穎紹天慧
<1>用輾轉相除法求最大公約數
演算法描述:
m對n求餘為a,
若a不等於0則m
<-n,n
<-a,繼續求餘否則n
為最大公約數
<2>最小公倍數
=兩個數的積
/最大公約數
#include
intmain()
{intm,
10樓:酈秀梅杞妍
用了一種比較笨的bai方法,但是du好理解,希望zhi對你有幫助。dao
#include
void
main()
//這個函式用於求最小公倍數
intmin_num(int
x,int
y)returni;}
//這個函式用於求最大公約數
intmax_num(int
x,int
y)returni;}
11樓:證喔
#include
void main ()
printf ("最大
公約數是%d\n", m);//上面的演算法n=0時daom這時的值就是最大公約數
printf ("最小公倍數是%d\n", p/m);//兩數的積除以最大公約數就是最小公倍數了
12樓:周素芹賴庚
程式設計:bai
(1)比較已給兩數大小du,選出小zhi的intx,y
if(x
>y)則y小(2)迴圈語句dao
for(i=小的那個數;i>=1;i--)如果回i能整除兩者則輸出結果答。if(
(x/i*i==
x)&&
(y/i*i
==y))
break;
printf("最大公約數是
%d\n",i);
13樓:匿名使用者
#include
int main()
else
printf("最大公約數是%d\n", m);
printf("最小公倍數是%d\n", p / m);
return 0;}
改了一下上面的
14樓:眭煜牟婉靜
最大公約數:(輾轉相除法)
調整順序
使m>=n
迴圈m=m%n;
如果m=0,則n為最大公約數,跳出迴圈。注:%表示取餘運算。
n=n%m;
如果n=0,則m為最大公約數,跳出迴圈。
next
求出最大公約數g後,用m*n/g得到
最小公倍數。
c語言程式設計:輸入兩個正整數m和n,求其最大公約數和最小公倍數。
15樓:冠夏登溪
用了一種比bai較笨的方法,du但是好理解zhi,希望對你有幫助dao
。#include
void
main()
//這個函式用於求最小公倍數
intmin_num(int
x,int
y)returni;}
//這個函式用於求最大公約數
intmax_num(int
x,int
y)returni;}
16樓:i樂於助人
#include
int main()
printf("greatest ***mon divisor: %d\n", n_cup);
printf("lease ***mon multiple : %d\n", m * n / n_cup);
} else printf("error!\n");
return 0;}
17樓:蘭昂位力
#include
using
namespace
std;
intmain()
C語言程式設計編寫程式,輸入正整數,統計該整數的位數並
include int main else printf d n k 1 輸出整數的回位答數for i 0 i k 1 i printf d n sum 輸出各位數的和 return 0 c語言程式設計 編寫程式,輸入一個正整數,統計該整數的位數並計算其各個數位上的數字之和。要求每行講 includ...
c語言編寫程式輸入正整數將其逆序輸出例
include int main return 0 分析 首先,輸入的是一個整數,因此最前面一位數不是零,所以我們可以用除10取餘法寫。a num 10 就是輸出數字的最後一位 然後除10剔除數字最後一位,這樣數字倒數第二位就會輸出。以此類推,就能逆序輸出數字。拓展資料for迴圈是程式語言中一種開界...
用C語言編寫程式 輸入實數x和正整數n,計算x的n次方,不許
include main bai int digitmf int x,int n return y include int main void return 0 include int main printf 3lf n sum 輸出sum return 0 include main 你試試看可da...