c語言公約數和公倍數
❶ c語言如何求最大公約數和最小公倍數
#include <stdio.h>
int main()
{
int a,b,c,m,t;
printf("請輸入兩個數: ");
scanf("%d%d",&a,&b);
if(a<b)
{
t=a;
a=b;
b=t;
}
m=a*b;
c=a%b;
while(c!=0)
{
a=b;
b=c;
c=a%b;
}
printf("最大公約數是: %d ",b);
printf("最小公倍數是: %d ",m/b);
}
(1)c語言公約數和公倍數擴展閱讀
演算法思想
利用格式專輸入語句將輸入的兩屬個數分別賦給 a 和 b,然後判斷 a 和 b 的關系,如果 a 小於 b,則利用中間變數 t 將其互換。
再利用輾轉相除法求出最大公約數,進而求出最小公倍數。最後用格式輸出語句將其輸出。
#include<stdio.h>是在程序編譯之前要處理的內容,稱為編譯預處理命令。編譯預處理命令還有很多,它們都以「#」開頭,並且不用分號結尾,所以是c語言的程序語句。
❷ C語言求最大公約數和公倍數
float y=34.0000;
printf("%d\n",y);
這個的輸出會是0,float輸出到%d上會是0.
所以最後一行你要改為
printf("%d %d\n",z,(int)y);
❸ c語言編程:輸入兩個正整數,求最大公約數和最小公倍數
#include
voidmain(){
inta,b,n1,n2,t;
while(true)
{
printf("任意輸入兩個正整數: ");
scanf("%d%d",&n1,&n2);
if(n1
{
t=n1;
n1=n2;
n2=t;
}
a=n1;
b=n2;
while(b!=0){/*利用輾除法,直到b為0為止*/
t=a%b;
a=b;
b=t;
}
printf("最大公約數為:%d ",a);
printf("最小公倍回數為:%d ",n1*n2/a);
}}
(3)c語言公約數和公倍數擴展閱讀
C語言求最答大公約數輾轉相除法
#include<stdio.h>
intgcd(intm,intn);//將輾轉相除的過程封裝為函數,使主函數結構清晰。
intmain(void)
{
inta,b;
while(~scanf("%d%d",&a,&b)){//多組數據輸入時的方式之一與while(scanf("%d%d",&a,&b)!=EOF)用途相同
printf("%d ",gcd(a,b));
return0;
}
intgcd(intm,intn)
{
returnn?gcd(n,m%n):m;//此函數將輾轉相除的過程以遞歸的形式呈現,簡化程序屬於常規套路。
}
❹ C語言求兩個數的最大公約數和最小公倍數
#include
#include
int
main()
{
int
a,b;
int
i,c;
printf("請輸入兩個正整數:");
scanf("%d%d",&a,&b);
c=(a>b)?b:a;
for(i=c;i>=1;i--)
{
if(a%i==0&&b%i==0)
{printf("最大公約數為:%d\n",i);
printf("最小公倍數為:%d\n",(a/i)*(b/i)*i);break
;}
}
return
0;
}
❺ c語言求公約數和公倍數
#include<stdio.h>
#include<stdlib.h>
intmain()
{
intn,i,j,t,r,bcs,cs,k,l;
scanf("%d",&n);
for(k=0;k<n;k++)
{
scanf("%d%d",&i,&j);
//去掉內了for循環容
if(i<j)
{
t=i;
i=j;
j=t;
}
else
if(i>0&&j>0)
{
bcs=i;
cs=j;
r=bcs%cs;
while(r!=0)
{
bcs=cs;
cs=r;
r=bcs%cs;
}
}
printf("%d%d ",cs,i*j/cs);
}
return0;
}
去掉了一個for循環,不知道你有什麼用,現在運行正確
❻ c語言編程求最大公約數和最小公倍數
#include<stdio.h>
int
main()
{
int
m,n;
int
divisor,dividend,res;/*除數
被除數
余數*/
scanf("%d%d",&m,&n);
if(m>0&&n>0)
{
if(m>=n)
{
divisor=n;
dividend=m;
}
else
{
divisor=m;
dividend=n;
}
res=dividend%divisor;
while(res!=0)//循環體是三條語句,不加大括弧循環只執行一條語句
{
dividend=divisor;
divisor=res;
res=dividend%divisor;
}
printf("%d",divisor);
}
else
printf("error!\n");
return
0;
}
兩數相乘除以最大公約數就是最小公倍數
❼ c語言最大公約數和最小公倍數怎麼表示
最大公約數和求最小公倍數
1、對兩個正整數a,b如果能在區間[a,0]或[b,0]內能找到一個整數temp能同時被a和b所整除,則temp即為最大公約數。
2、對兩個正整數a,b,如果若干個a之和或b之和能被b所整除或能被a所整除,則該和數即為所求的最小公倍數。
窮舉法求兩數的最大公約數
int divisor(int a,int b)
{
int temp;//定義義整型變數
temp=(a>b)?b:a;//采種條件運算表達式求出兩個數中的最小值
while(temp>0){
if(a%temp==0&&b%temp==0)//只要找到一個數能同時被a,b所整除,則中止循環
break;
temp--;//如不滿足if條件則變數自減,直到能被a,b所整除
}
return temp;//返回滿足條件的數到主調函數處
}
//窮舉法求兩數的最小公倍數
int multiple(int a,int b)
{
int p,q,temp;
p=(a>b)?a:b;//求兩個數中的最大值
q=(a>b)?b:a;//求兩個數中的最小值
temp=p;//最大值賦給p為變數自增作準備
while(1){//利用循環語句來求滿足條件的數值
if(p%q==0)
break;//只要找到變數的和數能被a或b所整除,則中止循環
p+=temp;//如果條件不滿足則變數自身相加
}
return p;
}
(7)c語言公約數和公倍數擴展閱讀:
while使用示例
C++
int a=NULL;
while(a<10)
{
a++;//自加
if(a>5)//不等while退出循環,直接判斷循環
{
break;//跳出循環
}
}
結果:結束後a的值為6。
javascript
下面的例子定義了一個循環程序,這個循環程序的參數i的起始值為0。該程序會反復運行,直到i大於10為止。i的步進值為1。
<html>
<body>
<script type="text/javascript">
var i=0
while(i<=10)
{document.write("The number is"+i);
document.write("<br/>");
i=i+1;}
</script>
</body>
</html>
結果
The number is0
The number is1
The number is2
The number is3
The number is4
The number is5
The number is6
The number is7
The number is8
The number is9
The number is10
網路——while
❽ c語言,求最小公倍數和最大公約數
震驚,您的來gcd返回值為0!
return才會自返回值啊,printf是不會返回值的。這樣的話d就賦值為0,然後/0就崩了。
你可以試試這個:
#include<stdio.h>
int gcd(int a,int b)
{
if(a==0)return b;
return gcd(b%a,a);
}
int a,b;
int main()
{
scanf("%d%d",&a,&b);
printf("%d\n%d",gcd(a,b),a*b/gcd(a,b));
return 0;
}
❾ C語言求最大公約數和最小公倍數
編譯通過
#include<stdio.h>
int
GongyueMax(int
a,int
b)
{int
i,f;
for(i=1;i<=(a<b)?a:b;i++)
{if(a%i==0&&b%i==0){f=i;break;}}
return(f);}
int
GongbeiMin(int
c,int
d)
{int
j,g;
for(j=c*d;j>=(c>d)?c:d;j--)
{if(j%c==0&&j%d==0)
{g=j;break;}}
return(g);}
void
main()
{int
x,y,p,q;
scanf("%d,%d",&x,&y);
p=GongyueMax(x,y);
q=GongbeiMin(x,y);
printf("GongyueMax=%d,GongbeiMin=%d\n",p,q);
}
for(i=1;i<=(a<b)?a:b;i++)
和for(j=c*d;j>=(c>d)?c:d;j--)
找到要的數後要跳出循環的
❿ c語言如何求最小公倍數和最大公約數
解題步驟:
1、求最大公約數
對兩個正整數a,b如果能在區間[a,0]或[b,0]內能找到一個整數temp能同時被a和b所整除,則temp即為最大公約數。
2、求最小公倍數
對兩個正整數a,b,如果若干個a之和或b之和能被b所整除或能被a所整除,則該和數即為所求的最小公倍數。
//窮舉法求兩數的最大公約數
int divisor(int a,int b)
{
int temp;//定義義整型變數
temp=(a>b)?b:a;//采種條件運算表達式求出兩個數中的最小值
while(temp>0){
if(a%temp==0&&b%temp==0)//只要找到一個數能同時被a,b所整除,則中止循環
break;
temp--;//如不滿足if條件則變數自減,直到能被a,b所整除
}
return temp;//返回滿足條件的數到主調函數處
}
//窮舉法求兩數的最小公倍數
int multiple(int a,int b)
{
int p,q,temp;
p=(a>b)?a:b;//求兩個數中的最大值
q=(a>b)?b:a;//求兩個數中的最小值
temp=p;//最大值賦給p為變數自增作準備
while(1){//利用循環語句來求滿足條件的數值
if(p%q==0)
break;//只要找到變數的和數能被a或b所整除,則中止循環
p+=temp;//如果條件不滿足則變數自身相加
}
return p;
}
(10)c語言公約數和公倍數擴展閱讀:
用窮舉法解題時,就是按照某種方式列舉問題答案的過程。針對問題的數據類型而言,常用的列舉方法一有如下三種:
(1)順序列舉是指答案范圍內的各種情況很容易與自然數對應甚至就是自然數,可以按自然數的變化順序去列舉。
(2)排列列舉有時答案的數據形式是一組數的排列,列舉出所有答案所在范圍內的排列,為排列列舉。
(3)組合列舉當答案的數據形式為一些元素的組合時,往往需要用組合列舉。組合是無序的。
例子如下:在公元五世紀我國數學家張丘建在其《算經》一書中提出了「百雞問題」:
「雞翁一值錢5,雞母一值錢3,雞雛三值錢1。百錢買百雞,問雞翁、母、雛各幾何?」這個數學問題的數學方程可列出如下:
Cock+Hen+Chick=100
Cock*5+Hen*3+Chick/3=100
顯然這是個不定方程,適用於窮舉法求解。依次取Cock值域中的一個值,然後求其他兩個數,滿足條件就是解。
該問題的C語言程序演算法如下:
int Cock,Hen,Chick;/*定義公雞,母雞,雞雛三個變數*/
Cock=0;
while(Cock<=19)/*公雞最多不可能大於19*/
{Hen=0;
whlie(Hen<=33)/*母雞最多不可能大於33*/
{Chick=100-Cock-Hen;
if(Cock*15+Hen*9+Chick==300)/*為了方便,將數量放大三倍比較*/
printf(" 公雞=%d 母雞=%d 雛雞=%d",Cock,Hen,Chick);
Hen=Hen+1;
}
Cock=Cock+1;
}