大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#includestdio.h
在分宜等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供做网站、网站设计 网站设计制作按需网站开发,公司网站建设,企业网站建设,品牌网站设计,成都全网营销推广,外贸网站建设,分宜网站建设费用合理。
intfun(intm,intn);
intfun1(intm,intn);
voidmain(){
intm,n;
do{
scanf("%d%d",m,n);
}while(m=0||n=0);
printf("%d,%d最大公约数是%d\n",m,n,fun(m,n));
printf("%d,%d最小公倍数是%d\n",m,n,fun1(m,n));
}
intfun(intm,intn){
intr,t;
if(mn){
t=m;m=n;n=t;
}
while(n!=0){//辗转相除法
r=m%n;
m=n;
n=r;
}
returnm;
}
intfun1(intm,intn){//暴力破解法
intresult;
for(result=1;;result++){
if(result%m==0result%n==0){
break;
}
}
returnresult;
}
扩展资料
c语言求两个整数的最大公约数
#includestdio.h
#includestdlib.h
intmain()
{
inttmp,a,b;
printf("请输入两个整数:\n");
scanf("%d%d",a,b);
while(a%b!=0)
{
tmp=a%b;//取余
a=b;//交换a,b可避免a比b小
b=tmp;
}
printf("%d\n",b);
return0;
}
解题步骤:
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=(agt;b)?b:a;//采种条件运算表达式求出两个数中的最小值
while(tempgt;0){
if(a%temp==0b%temp==0)//只要找到一个数能同时被a,b所整除,则中止循环
break;
temp--;//如不满足if条件则变量自减,直到能被a,b所整除
}
return temp;//返回满足条件的数到主调函数处
}
//穷举法求两数的最小公倍数
int multiple(int a,int b)
{
int p,q,temp;
p=(agt;b)?a:b;//求两个数中的最大值
q=(agt;b)?b:a;//求两个数中的最小值
temp=p;//最大值赋给p为变量自增作准备
while(1){//利用循环语句来求满足条件的数值
if(p%q==0)
break;//只要找到变量的和数能被a或b所整除,则中止循环
p+=temp;//如果条件不满足则变量自身相加
}
return p;
}
扩展资料:
用穷举法解题时,就是按照某种方式列举问题答案的过程。针对问题的数据类型而言,常用的列举方法一有如下三种:
(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(Cocklt;=19)/*公鸡最多不可能大于19*/
{Hen=0;
whlie(Henlt;=33)/*母鸡最多不可能大于33*/
{Chick=100-Cock-Hen;
if(Cock*15+Hen*9+Chick==300)/*为了方便,将数量放大三倍比较*/
printf("\n公鸡=%d\n母鸡=%d\n雏鸡=%d",Cock,Hen,Chick);
Hen=Hen+1;
}
Cock=Cock+1;
}
参考资料:
百度百科——穷举法
#include stdio.h
#include stdlib.h
//核心是辗转相除法求最大公约数,最大公约数*最小公倍数 = 数1*数2
void main()
{
int num1,num2,temp;
int a,b;
printf("input two numbers:\n");
scanf("%d %d",num1,num2);
if(num1num2){
temp =num1;
num1 = num2;
num2 = temp;
}
a = num1;
b =num2;
while(b!= 0){//辗转相除法求最大公约数
temp = a%b;
a =b;
b =temp;
}
printf("最大公约数是%d\n",a);
printf("最小公倍数是%d\n",num1*num2/a); //
}
#include stdio.h
long long int gongyue(long long int m,long long int n){
long long int c;
if(m2 || n2) return 44;
if(mn){
c=m%n;
while(c0){
m=n;
n=c;
c=m % n;
}
}
else{
c=n % m;
while(c0){
n=m;
m=c;
c=n % m;
}
}
m=n;
return m;
}
long long int gongbei(long long int m,long long int n){
return m/gongyue(m,n)*n;
}
int main(){
long long int a,b,c,m,n;
printf("请输两个正整数a,b:");
scanf("%lld%lld",a,b);
m=gongyue(a,b);
n=gongbei(a,b);
printf("最大公约数%lld,最小公倍数%lld\n",m,n);
return 0;
}
我代码复制给你看。
#includestdio.h
int GCD(int a,int b) //GCD表示最大公约数
{
int z= ab?a:b; //我从输入的两个数中较小的那个开始判断是不是最大公约数,不是就一直-1
while(z=1) // 直到找到能同时被X,Y整除的数,它就是最大公约数了。
{
if(a%z==0b%z==0) break;//最快满足这个条件的Z就是最大公约数
z--;
}
return z;
}
int LCM(int a,int b) //LCM表示最小公倍数
{
int z=ab?a:b; //我从输入的两个数中最大的那个开始判断是不是最小公倍数,不是就一直+1
while(z=(a*b)) //两个非零数a,b,我们知道a*b肯定是它的公倍数 ,所以从两个数的最大那个数开始
{ //一直到a*b肯定存在最小公倍数
if(z%a==0z%b==0)break; //最快满足这个条件的Z就是最小公倍数
z++;
}
return z;
}
int main()
{
while(1)
{
int x,y,z,d;
printf("请输入两个整数:");
scanf("%d %d",x,y);
z=GCD(x,y);
d=LCM(x,y);
printf("这两个数的最大公约数是%d\n",z);
printf("这两个数的最小公倍数是%d\n",d);
printf("\n");
}
}
按照数学定义求。
最简单的 从较大数开始,一直累加出一个两个的共同倍数。
也可以先求最大公约数 然后用两个数的积除以最大公约数
int func(int a, int b)
{
int r;
for( r=a; ; r++)
if(r%a==0 r%b==0) break;
return r;
}