A. c語言求最大公約數和最小公倍數
c語言求最大公約數和最小公倍數,回答如下:
在做C語言相關練習的時候,會遇見比較經典的一道題型,就是求最大公約數或者最小公倍數。那麼先普及一下什麼是最大公約數和最大公倍數:
最大公約數:指能夠整除多個整數的最大正整數。例如8和12的最大公約數為4。
最小公倍數:兩個或多個整數最小的公共倍數。例如6和24的最小公倍數為24。
2.輾轉相除法
輾轉相除法是用來求最大公約數的,同時最小公倍數滿足這樣一條數學性質:兩數之積除以最大公約數即為最小公倍數.所以用輾轉相除法是可以間接求最小公倍數的。
輾轉相除法的大概思路:用兩數相除,如果余數為零即為所求,如果余數不為零,上空滲笑一輪相除所得的余數為除數,同時上一輪的除數現在成為被斗含除數,直到余數為零不再相除,此時的除數即為所求。
B. 如何用C語言求最小公倍數。。。
主要是輾轉相除法。
方法一、不設函數
#include
<stdio.h>
int
main
()
{int
p,r,n,m,temp;
printf("please
enter
two
positive
integer
numbers
n,m:");
scanf("%d
%d",&n,&m);
if
(n<m)
{temp=n;
n=m;
m=temp;
//把大數放在n中,
小數放在m中
}
p=n*m;
//先將n和m的乘積保存在p中,
以便求最小公倍數時用
while
(m!=0)
//求n和m的最大公約數
{r=n%m;
n=m;
m=r;
}
printf("HCF=%d\n",n);
printf("LCD=%d\n",p/n);
//
p是原來兩個整數的乘積
return
0;
}
方法二、調用函數
#include
<stdio.h>
int
main
()
{int
p,r,n,m,temp;
printf("please
enter
two
positive
integer
numbers
n,m:");
scanf("%d
%d",&n,&m);
if
(n<m)
{temp=n;
n=m;
m=temp;
//把大數放在n中,
小數放在m中
}
p=n*m;
//先將n和m的乘積保存在p中,
以便求最小公倍數時用
while
(m!=0)
//求n和m的最大公約數
{r=n%m;
n=m;
m=r;
}
printf("HCF=%d\n",n);
printf("LCD=%d\n",p/n);
//
p是原來兩個整數的乘積
return
0;
}
C. C語言編程,求最小公倍數。
1、首先介紹一下求最小公倍數的經典方法:
輾轉相除法
有兩整數a和b:
①a%b得余數c
②若c=0,則b即為兩數的最大公約數
③若c≠0,則a=b,b=c,再回去執行①
a*b除以最大公約數等於最小公倍數
2、因此原問題也化為最小公倍數和最大公約數一起求了。程序的演算法如下:
#include<stdio.h>
int lowest_common_multiple(int m,int n);
int main()
{
int m,n,c;
printf("請輸入m的值: ");
scanf("%d",&m);
printf("請輸入n的值: ");
scanf("%d",&n);
c=lowest_common_multiple( m, n);
printf("請輸出最小公倍數c的值: ");
printf("%d ",c);
return 0;
}
int lowest_common_multiple(int m,int n)
{
int remainder,m1,n1;
m1=m;
n1=n;
while (n != 0) {
remainder = m % n;
m = n;
n = remainder;
}
//printf("輸出最大公約數m: %d ", m); //此時的m為最大公約數
return m1*n1/m;
}
3、程序的輸出如下:
4、此題注釋的哪一個是輸出最大公約數的。