1. c语言问题 求n个数最大公约数
#include<stdio.h>
main(void)
{inta[9],n,t,i,temp1,temp2,c,d;
printf("请输入您所要输入的数字个数(须在2-9之间)
");
scanf("%d",&n);
for(i=0;i<n;i++)
{scanf("%d",&a[i]);
}
if(a[0]<a[1])
{temp1=a[0];
a[0]=a[1];
a[1]=temp1;
}
while(a[0]%a[1]!=0)
{c=a[0];
a[0]=a[1];
a[1]=c%a[1];
}
a[0]=a[1];
for(i=0;i<n;i++)
{if(a[0]<a[i])
{temp2=a[0];
a[0]=a[i];
a[i]=temp2;
}
while(a[0]%a[i]!=0)
{d=a[0];
a[0]=a[i];
a[i]=d%a[i];
}
a[0]=a[i];
}
printf("您所输入的数字最大公约数为%d",a[0]);
}
2. c语言求n个数的最大公约数和最小公倍数求个程序 刚入门不要太难的。。。
#include<stdio.h>
intmain()
{
inta[100],n,i,d;
printf("请输入您所要输入的数字个数 ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=1;i<n;i++)
{
while(a[i]%a[0]!=0)
{
d=a[i];
a[i]=a[0];
a[0]=d%a[0];
}
}
printf("您所输入的数字最大公约数为:%d",a[0]);
}
3. C语言输入n个正整数,求他们的最大公约数和最小公倍数
最大公约数用欧几里得算法,比如输入 a 和 b ,求得最大公约数是 c,那么最小公倍数就是 ( a * b / c )
参考代码如下:
#include<stdio.h>
int gcd( int a, int b )
{
if ( b == 0 )
return a;
else
return gcd( b, a % b );
}
int main()
{
int a, b, c;
printf( "Input two numbers : " );
scanf("%d%d", &a, &b);
c = gcd( a, b );
printf( "最大公约数是 %d\n", c );
printf( "最小公倍数是 %d\n", (a * b / c) );
return 0;
}
4. c语言求最大公约数
1、新建一个C语言源程序,这里使用Visual C++6.0的软件:
5. C语言求n个正整数的最大公约数和最小公约数
int num[1000];
int n;
int MCD(a,b) //辗转相除法求最大公约数
int a,b;
{
int s;
if(b>a) {a=a+b;
b=a-b;
a=a-b;
}
s=a%b;
while(s!=0)
{
a=b;
b=s;
s=a%b;
}
return b;
}
int input()
{
int i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&num[i]);
}
int Max()
{
int i;
int max=0;
for(i=0;i<n;i++)
if(num[i]>max) max=num[i];
return max;
}
int main()
{
int f;
int i;
int m;
input();
f=MCD(num[0],num[1]);
for(i=2;i<n;i++)
f=MCD(f,num[i]);
printf("%d\n",f); //最大公约数
m=Max()*f;
printf("%d\n",m); //最小公倍数
getchar();
getchar();
}
6. c语言编程,输入n个正整数,求最大公约数。(最好有注释)
#include<stdio.h>
#define N 3/* 正整数的个数 */
int lcd(int a,int b)/* 辗转相除法求最大公约数 */
{int c;
while(b!=0) /* 余数不为0,继续相除,直到余数为0 */
{ c=a%b; a=b; b=c;}
return a;
}
void main()
{
int i,j;
int a[N];
printf("Input %d numbers:\n",N);
for(i=0;i<N;i++)
scanf("%d", &a[i]);
j=a[0];
for(i=0;i<N;i++)
j=lcd(a[i],j);
printf("The largest common divisor:%d\n", j);
}
7. C语言程序设计如何求最大公约数
具体操作步骤如下:
一、新建一个C语言源程序,使用Visual C++6.0的软件。
8. C语言求最大公约数的代码
你的代码,主要的错误在for循环里的判断条件,应该是a%i!=0&&b%i!=0
不等号;但是,是了很久,发现这样的算法或者说思路也是错误的!因为你这样找到的只是两个数的最小公约数,而非最大公约数的,你可以用原来的想法,i
从
两个数中较小者那个从大到小去循环,从而找到两个数的公约数,也就是(从大到小)倒这来找公约数;或者建议你考虑辗转相除法,辗转相除法的思路是这样的:若
m和n为这连个正整数,有:当m>n,m与n
的最大公约数等于
n
与
m%n的最大公约数当n=0
,m与
n
的最大公约数等于
m,以下是算法,使用for语句:#include<stdio.h>
#include<windows.h>
int
main(){
int
a,b,m,n,r;
printf("输入两个正整数(请用逗号隔开):");
scanf("%d%d",&a,&b);
if(a>b)
{
m=a;
n=b;
}
else
{
m=b;
n=a;
}
for(r=b;r!=0;){
r=m%n;
m=n;
n=r;
}
printf("%d
和
%d
的最大公约数是:%d\n",a,b,m);
system("PAUSE");
return
0;
}
9. 求n个正整数的最大公约数,先输入n的值再输入n个正整数的数值,然后求最大公约数(c语言编程实现)
#include<stdio.h>
#defineN100/*正整数的个数*/
intlcd(inta,intb)/*辗转相除法求最大公约数*/
{intc;
while(b!=0)/*余数不为0,继续相除,直到余数为0*/
{c=a%b;a=b;b=c;}
returna;
}
voidmain()
{
inti,j;
inta[N];
printf("Input%dnumbers: ",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
j=a[0];
for(i=0;i<N;i++)
j=lcd(a[i],j);
printf("Thelargestcommondivisor:%d ",j);
}
10. C语言程序设计如何求最大公约数
求最大公约数算法:
(1)辗转相除法
两整数a和b:
① a%b得余数c
② 若c=0,则b即为两数的最大公约数,结束
③ 若c≠0,则a=b,b=c,再回去执行①
(2)相减法
两整数a和b:
① 若a>b,则a=a-b
② 若a<b,则b=b-a
③ 若a=b,则a(或b)即为两数的最大公约数,结束
④ 若a≠b,则再回去执行①
(3)穷举法:
① i= a b中的小数
② 若a,b能同时被i整除,则i即为最大公约数,结束
③ i--,再回去执行②
相关代码:
#include<stdio.h>
intxc_gcd(inta,intb)
{
intc;
c=a%b;
while(c!=0)
{
a=b;
b=c;
c=a%b;
}
returnb;
}
intxj_gcd(inta,intb)
{
while(a!=b)
{
if(a>b)
a-=b;
else
b-=a;
}
returnb;
}
intqj_gcd(inta,intb)
{
inti;
i=(a>b)?a:b;
while(a%i!=0&&b%i!=0)
i--;
returni;
}
voidmain()
{
//inta=36,b=27;
//inta=27,b=36;
inta=100,b=201;
printf("a=%db=%d ",a,b);
printf("辗转相除法求最大公约数=%d ",xc_gcd(a,b));
printf("相减法求最大公约数=%d ",xc_gcd(a,b));
printf("穷举法求最大公约数=%d ",xc_gcd(a,b));
}
运行效果图: