首页 > 其他分享 >C语言填空:减损法求最大公约数

C语言填空:减损法求最大公约数

时间:2023-02-10 10:45:33浏览次数:37  
标签:更相 28 35 减损 最大公约数 63 填空 法求

#include <stdio.h>
//<<九章算术>>更相减损法: 可以用来求两个数的最大公约数,即“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。
//以等数约之。
///第一步:任意给定两个正整数;判断它们是否都是偶数。若是,则用2约简;若不是则执行第二步。
//第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。
//则第一步中约掉的若干个2与第二步中等数的乘积就是所求的最大公约数。
//其中所说的“等数”,就是最大公约数。求“等数”的办法是“更相减损”法。所以更相减损法也叫等值算法。
//如98 63,98-63=35  63-35=28 35-28=7 28-7=21 21-7=14 14-7=7 7-7=0 
#include <math.h>
main()
{
    int a=98,b=63,c;
    scanf("%d%d",&a,&b);
    while(【1】) 
    a=a/2,b=b/2;
    while(【2】)
    {
        c=【3】;
        a=b;
        b=c;
    }
    printf("%d",【4】);
    getchar();
 }
#include <stdio.h>
//<<九章算术>>更相减损法: 可以用来求两个数的最大公约数,即“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。
//以等数约之。
///第一步:任意给定两个正整数;判断它们是否都是偶数。若是,则用2约简;若不是则执行第二步。
//第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。
//则第一步中约掉的若干个2与第二步中等数的乘积就是所求的最大公约数。
//其中所说的“等数”,就是最大公约数。求“等数”的办法是“更相减损”法。所以更相减损法也叫等值算法。
//如98 63,98-63=35  63-35=28 35-28=7 28-7=21 21-7=14 14-7=7 7-7=0 
#include <math.h>
main()
{
    int a=98,b=63,c;
    scanf("%d%d",&a,&b);
    while(a%2==0 && b%2==0) 
    a=a/2,b=b/2;
    while((a-b)!=0)
    {
        c=abs(a-b);
        a=b;
        b=c;
    }
    printf("%d",a);
    getchar();
 }

 

标签:更相,28,35,减损,最大公约数,63,填空,法求
From: https://www.cnblogs.com/xkdn/p/17108091.html

相关文章

  • C语言填空:最大公约数
    //求最大公约数#include<stdio.h>main(){intm,n,i,k;scanf("%d,%d",【1】);k=【2】?m:n;for(i=k;i>=1;i--){if(【3】)......
  • C语言填空:1-5阶乘和
    #include<stdio.h>//计算1到5的阶乘和,并将结果保存到变量s中main(){inta,s=【1】,b=【2】;for(a=1;a<=【3】;a++){b=b*a;s【4】=......
  • C语言填空:求和 逗号表达式为条件
    #include<stdio.h>//求s=1+2+3+4+...+100main(){inta=101,【1】;while(【2】,a>0)s【3】=【4】;printf("s=%d",s);getchar();}#inclu......
  • C语言填空:程序段后变量的值
    #include<stdio.h>//执行程序段后,变量s的值为()main(){inta=10,s=0;do{s=s+a;a++;}while(a<1);getchar();}#inclu......
  • C语言填空:结束后变量的值
    #include<stdio.h>//执行下列程序段后,y的值是(),x的值是(),m的值是(),n的值是()main(){intx,y,z,m,n;m=10;n=5;x=(--m==n++)?--m:++n;y=m++;pri......
  • C语言填空:最大值函数
    #include<stdio.h>//求两个数中的最大值intmax(inta,intb){return【1】;}main(){inta,b;scanf("%d%d",【2】);printf("max=%d",【3】)......
  • C语言填空:阶乘
    #include<stdio.h>//求任意整数的阶乘//如果输入3则输出3!=6main(){intn,a,c=1;scanf("%d",&n);for(a=1;【1】;a++)c=【2】;printf("%d!......
  • c语言填空:两个数组计算
    #include<stdio.h>//求出a中各相邻两个元素的和,并将这些和存放在数组b中//按每行3个元素的形式输出。例如:b[1]=a[1]+a[0],....,b[9]=a[9]+a[8]main(){inta[10......
  • C语言填空:单词个数
    #include<stdio.h>//输入一行英文,输出单词个数#include<string.h>main(){charzf[101];inta,b,【1】;【1】;a=【1】;for(b=0;【1】;b++......
  • C语言填空:数组 最大值 最小值
    #include<stdio.h>//输入5个1-9之间的整数,输出其中的最大值和最小值main(){inta[5],i,j,temp,【1】;for(i=0;i<5;i++)scanf("%d",&a[i]);for(i......