Ⅰ c語言程序編寫:計算兩個數的最大公約數
#include<stdio.h>
#include <conio.h>
void main()
{
int m,n,k;
while (1)
{
printf("輸入m和n(m>n):");
scanf("%d %d",&m,&n);
if(m<n)
printf("輸入錯誤,請重新輸入\n");
else break;
}
while (1)
{
k=m%n;
if(k==0)
break;
m=n;
n=k;
}
printf("m和n的最大公約數是:%d",n);
getch();
}
Ⅱ c語言求最大公約數
1、新建一個C語言源程序,這里使用Visual C++6.0的軟體:
Ⅲ C語言程序:求兩個數的最大公約數和最小公倍數。
#include<iostream>
using
namespace
std;
int
f(int
p,int
q);
int
g(int
u,int
v,int
w);
int
main()
{
int
x,y,m,n;
cout<<"請輸入兩個整數"<<endl;
cin>>x>>y;
m=f(x,y);
n=g(x,y,m);
cout<<"這兩個數的最大公約數是"<<m<<"\n這兩個數的最小公倍數是"<<n<<endl;
}
int
f(int
p,int
q)
{
int
r;
p>q?r=q:r=p;
//找兩個數中最小的最小的
for(;p%r!=0||q%r!=0;r--);
return
r;
}
int
g(int
u,int
v,int
w)
//w是最大公約數
{
int
g;
g=u*v/w;
return
g;
}
Ⅳ c語言編程,求兩個數的最大公約數和最小公倍數
這樣寫:
#include
void
main()
{
int
m,n,i,r,temp;
printf("請輸入第一個數的值:
");
scanf("%d",&m);
printf("請輸入第二個數的值:
");
scanf("%d",&n);
if(n>m)
{
temp=m;
m=n;
n=temp;
}
i=n;
while(i%m!=0)
{
i=i+n;
}
printf("最小公倍數是:%d
\n",i);
r=m%n;
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
printf("最大公約數是:%d
\n",n);
}
圖:
Ⅳ c語言編程求輸入兩個數的最大公約數和最小公倍數,怎麼做
輸入兩個正整數m和n,求其最大公約數和最小公倍數.用輾轉相除法求最大公約數 演算法描述:m對n求余為a,若a不等於0 則 m 0)
{
m_cup = m;
#include<stdio.h>
voidmain()
{
intm,n,m1,n1,t;
printf("請輸入兩個數(用空格隔開):");
scanf("%d%d",&m,&n);
if(n>m)
{
t=m;
m=n;
n=t;
}
m1=m;
n1=n;
while(n!=0)
{
t=m%n;
m=n;
n=t;
}
printf("%d和%d的最大公約數是:%d
",m1,n1,m);
printf("最小公倍數是:%d
",m1*n1/m);
}
Ⅵ C語言編程中,求兩個數的最大公約數和最小公倍數演算法是怎樣的
#include
main()
{
int
m,n,r;
printf("請輸入兩個數字:");
scanf("%d%d",&m,&n);
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
printf("兩個數字的最大公約數為%d\n",n);
getch();
}
這個演算法就是把你初中算最大公約數的過程給程序化了。。你用以前的方法在紙上算算最大公約數
再對照WHILE裡面的演算法
就能明白咋回事了。。
Ⅶ 大一C語言,問題,編程,輸入兩個數。求兩個數的最大共約數。
演算法:輾轉取余。
比如,求12和15的最大公約數,比較大的數對比較小的數進行取余。15%12=3,12%3=0,所以3就是它們的最大公約數。具體做法是,你輸兩個整數m和n,假設m是這兩個數中比較大的一個,m對n進行取余,如果結果不為0,把原來n的值賦給m,把m對n取余得到的結果賦給n,這樣就得到了一組新的m和n的值。用這新的m再次對新的n進行取余,如果結果不為0,那麼把這個n的值賦給m,把這次m對n取余得到的結果賦給n,……直到m%n=0,此時m的值就是原來m、n的最大公約數。最小公倍數=原來的連個數的乘積除以最大公約數。
#include
<stdio.h>
void
main()
{
int
p,r,m,n;
printf("請輸入兩個正整數m,n:");
scanf("%d%d",&n,&m);
p=n*m;
if(m<n)
{
r=m;
m=n;
n=r;
}
while(n!=0)
{
r=m%n;
m=n;
n=r;
}
printf("它們的最大公約數為:%d\n",m);
printf("它們的最小公約數為:%d\n",p/m);
}
Ⅷ c語言求兩個數的最大公約數
求兩個數的最大公約數就是用短除法求出這兩個數的公因數,最大公因數就是這兩個數的最大公約數。
Ⅸ 如何用C語言求兩個數的最大公約數的三種演算法
1、相減法
#include<stdio.h>
int
main()
{
int
a,b;
int
c=0;//計數器
while(1)//循環判斷的作用
{
printf("輸入兩個數字求最大公約數:");
scanf("%d%d",&a,&b);
while(a!=b)
{
if(a>b)
a=a-b;
else
b=b-a;
c++;
}
printf("最大公約數是:%d\n",a);
printf("%d\n",c);
}
return
0;
}
運行效果:
2、輾轉相除法:
#include<stdio.h>
int
a,b,temp;
int
Division(){
printf("請輸入兩個數(a,b):\n");
scanf("%d,%d",&a,&b);
if(a<b){
temp=a;
a=b;
b=temp;
}
while(a%b!=0){
temp=a%b;
a=b;
b=temp;
}
printf("最大公約數為:%d\n",b);
return
0;
}
3、窮舉法
#include<stdio.h>
int
main()
{
int
a,b,c;
int
d=0;//計數器
while(1)
{
printf("輸入兩個數字求最大公約數:");
scanf("%d%d",&a,&b);
c=(a>b)?b:a;//三目運算符
while(a%c!=0||b%c!=0)
{
c--;
d++;
}
printf("最大公約數是:%d\n",c);
printf("%d\n",d);
}
return
0;
}
Ⅹ 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);
}}
(10)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;//此函數將輾轉相除的過程以遞歸的形式呈現,簡化程序屬於常規套路。
}