最小公倍數c演算法
演算法有很多啊
最簡單的 暴力求
比如
intfunc(inta,intb)
{
intr;
for(r=a<b?b:a;;r++)
if(r%a==0&&r%b==0)break;
returnr;
}
還有求所有質因子 然後剔除相同的 乘起來 標準的數學演算法
或者用輾轉相除求最大公約數 然後用乘積去除
方法很多的
⑵ 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、此題注釋的哪一個是輸出最大公約數的。
⑶ c語言最小公倍數怎麼求
【利用C語言求最小公倍數主要用到if
whie循環】
例子如下:
直接編譯,程序輸出結果中任意輸入兩個數,如5和8,然後按回車,結果如下圖所示:
兩個或多個整數公有的倍數叫做它們的公倍數,其中除0以外最小的一個公倍數就叫做這幾個整數的最小公倍數。
⑷ C語言求最小公倍數怎麼求
#include <stdio.h>
int GCD(int num1,int num2)
{
if (num1 % num2 == 0)
return num2;
else
return GCD(num2, num1 % num2);
}
int LCM(int a,int b)
{
int temp_lcm;
temp_lcm = a*b/GCD(a, b); //最小公倍數等於兩數之積除以最大公約數
return temp_lcm;
}
int main()
{
int a,b;
while (scanf("%d%d",&a,&b)!= EOF)
{
printf("%d\n",LCM(a,b));
}
return 0;
}
先求出最大公約數,
最小公倍數由最大公約數轉化過去
最大公約數由遞歸就可以出來了
望採納謝謝
⑸ C語言求最小公倍數
# include <stdio.h>
#include<string.h>
const int MAX=2000;
int lcm(int m, int n)
{
int i,t;
if(m<n)
{t=m;m=n;n=t;}
for(i=m;i>=1;i++)
//if(i/m*m==m&&i/n*n==n) 這樣是不對的i/m是整除的,比如3/4=1
if(i%m==0&&i%n==0)//判斷整除是這么判斷的
break;
return i;
}
int main (void)
{
int m,n;
scanf("%d%d",&n,&m);
printf("%d\n",lcm(n,m));
return 0;
}
⑹ C語言 求最小公倍數 怎麼求
#include<stdio.h>
intmain()
{
inti,j,k;
scanf("%d%d",&i,&j);
for(k=i;k%i||k%j;k++);
printf("%d和%d的最小公倍數為%d ",i,j,k);
return0;
}
⑺ c語言如何求最小公倍數
按照數學定義求。
最簡單的 從較大數開始,一直累加出一個兩個的共同倍數。
也可以先求最大公約數 然後用兩個數的積除以最大公約數
intfunc(inta,intb)
{
intr;
for(r=a;;r++)
if(r%a==0&&r%b==0)break;
returnr;
}
⑻ C語言編程中最小公倍數怎麼求
思想:輸入的兩個數,大數m是小數n的倍數,那麼大數m即為所求的最小公倍數;若大數m不能被小數n整除則需要尋找一個能同時被兩數整除的自然數。
從大數m開始依次向後遞增直到找到第一個能同時被兩數整除的數為止,所以循環變數i的初值為尋找第一個能同時被兩整數整除的自然數,並將其輸出。需要注意的是,在找到第一個滿足條件的i值後,循環沒必要繼續下去,所以用break來結束循環。
#include<stdio.h>
int main()
{
int m, n, temp, i;
printf("Input m & n:");
scanf("%d%d", &m, &n);
if(m<n) /*比較大小,使得m中存儲大數,n中存儲小數*/
{
temp = m;
m = n;
n = temp;
}
for(i=m; i>0; i++) /*從大數開始尋找滿足條件的自然數*/
if(i%m==0 && i%n==0)
{/*輸出滿足條件的自然數並結束循環*/
printf("The LCW of %d and %d is: %d ", m, n, i);
break;
}
return 0;
}
(8)最小公倍數c演算法擴展閱讀:
c語言書寫規則:
1、一個說明或一個語句佔一行。
2、用{} 括起來的部分,通常表示了程序的某一層次結構。{}一般與該結構語句的第一個字母對齊,並單獨佔一行。
3、低一層次的語句或說明可比高一層次的語句或說明縮進若干格後書寫。以便看起來更加清晰,增加程序的可讀性。在編程時應力求遵循這些規則,以養成良好的編程風格。
網路-c語言
⑼ 用C語言編寫程序求兩個數的最小公倍數,並輸出
如圖使用輾轉相除法求最小公倍數:
(9)最小公倍數c演算法擴展閱讀:
輾轉相除法, 又名歐幾里德演算法(Euclidean algorithm),是求最大公約數的一種方法。
它的具體做法是:用較大數除以較小數,再用出現的余數(第一餘數)去除除數,再用出現的余數(第二餘數)去除第一餘數,如此反復,直到最後余數是0為止。如果是求兩個數的最大公約數,那麼最後的除數就是這兩個數的最大公約數。
兩個數的最大公約數是指能同時整除它們的最大正整數。
設兩數為a、b(a2b),求a和b最大公約數(a,b)的步驟如下:
(1)用a除以b(a2b),得a÷b=q..n(0≤n)。
(2)若rn=0,則(a,b)=b;
(3)若r10,則再用b除以n,得b÷n=q..2(0sr2)
(4)若r2=0,則(a,b)=rn;若r20,則繼續用r1除以r2,.…,如此下去,直到能整除為止。
其最後一個余數為0的除數即為(a,b)的最大公約數。
⑽ 最小公倍數怎麼求演算法c語言
求兩個正整數的最小公倍數,可以有很多種不同的計算方法。其中下面是一種用C語言實現的計算方法。
int gcd(int a,int b)
{int r;
while(b)
r=a%b,a=b,b=r;
return a;
}