/*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能:用辗转相除法求两个整数的最大公约数。 ------------------------------------------------*/ #include<stdio.h> void bky(); int gcd(int n,int m) { /**********Begin**********/ /********** End **********/ } main() { int n,m,result; scanf("%d%d",&n,&m); result=gcd(n,m); printf("the gcd is %d\n",result); bky(); } void bky() { FILE *IN,*OUT; int m,n; int i[2]; int o; IN=fopen("in.dat","r"); if(IN==NULL) { printf("Read FILE Error"); } OUT=fopen("out.dat","w"); if(OUT==NULL) { printf("Write FILE Error"); } for(n=0;n<6;n++) { for(m=0;m<2;m++) { fscanf(IN,"%d",&i[m]); } o=gcd(i[0],i[1]); fprintf(OUT,"%d\n",o); } fclose(IN); fclose(OUT); }
时间: 2023-09-10 07:12:31 浏览: 92
这是一段 C 语言代码,实现了用辗转相除法求两个整数的最大公约数。在主函数中,通过 scanf() 函数输入两个整数 n 和 m,然后调用 gcd() 函数求最大公约数,并将结果存储在变量 result 中,最后输出结果。而 bky() 函数则是用来读取文件 "in.dat" 中的数据,并将计算结果写入文件 "out.dat" 中。
gcd() 函数的实现如下:
int gcd(int n, int m) {
int r;
while (m > 0) {
r = n % m;
n = m;
m = r;
}
return n;
}
该函数使用了辗转相除法求最大公约数,具体步骤为:用较大的数对较小的数取余,然后用较小的数对余数取余,直到余数为 0,此时较小的数即为最大公约数。
阅读全文