c语言用辗转相除法将一个十进制整数转换成任意非十进制数(二、八、十六)

c语言用辗转相除法将一个十进制整数转换成任意非十进制数(二、八、十六),第1张

#include <stdioh>

void main()

{

    / b[16]为数组,n—十进制数,m—进制类型,r—余数,i—循环变量,k—下标 /

    int b[16],t,m,n,k,r,i;

    

    printf("请输入一个十进制整数: "); / 输入提示 /

    scanf("%d",&n);

    

    printf("请输入一个要转换的进制类型(2,8,16): "); / 输入提示 /

    scanf("%d",&m);

    

    t=n; / 用t暂存n /

    k=-1; / k为数组下标, 初值为-1 /

    

    /在两条星线间填入代码, 用辗转相除法将十进制数转换为m进制数并存入数组b/

    //

    if(m != 2 && m!= 8 && m!=16)

    {   

        printf("输入的进制数不是2,8,16其中之一,默认使用2!!!!!!!\n");

        m = 2;

    }   

    while(n) {

        r = n % m;

        n = n / m;

        b[++k] = r;

    }   

    

    //

    

    /输出提示/

    printf("十进制整数%d转换为%d进制数,结果=",t,m);

    

    /在两条星线间填入代码, 从高位到低位输出数组b(使用switch多分支语句)/

    //

    for(i = k;i >= 0;i--)

        printf("%d", b[i]);

    

    //

    

    printf("\n"); / 换行 /

}

#define _CRT_SECURE_NO_WARNINGS

#include <stdioh>

#include <stdlibh>

int main()

{

int a, b,r;

scanf("%d %d", &a, &b);

while (b != 0)//当其中一个数为0,另一个数就是两数的最大公约数

{

r = a%b;

a = b;

b = r;

}

printf("最大公约数%d\n", a);

system("pause");

}

例子:

105252

252%105=42;

105%42=21;

42%21=0;

即21为105与252的最大公约数

扩展资料:

while语句若一直满足条件,则会不断的重复下去。但有时,需要停止循环,则可以用下面的三种方式:

一、在while语句中设定条件语句,条件不满足,则循环自动停止。

如:只输出3的倍数的循环;可以设置范围为:0到20。

二、在循环结构中加入流程控制语句,可以使用户退出循环。

1、break流程控制:强制中断该运行区内的语句,跳出该运行区,继续运行区域外的语句。

2、continue流程控制:也是中断循环内的运行 *** 作,并且从头开始运行。

辗转相除法, 又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至3000年前。它首次出现于欧几里德的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。它并不需要把二数作质因子分解。只要可计算余数都可用辗转相除法来求最大公因子。这包括多项式、复整数及所有欧几里德定义域(Euclidean domain)。

简单的想法

设两数为a、b(b<a),求它们最大公约数(a、b)的步骤如下:用b除a,得a=bqr 1(0≤r)。若r1=0,则(a,b)=b;若r1≠0,则再用r1除b,得b=r1qr2 (0≤r2)若r2=0,则(a,b)=r1,若r2≠0,则继续用r2除r1,……如此下去,直到能整除为止。其最后一个非零余数即为(a,b)。

本题中,要求x,y的最大公约数,不妨设x>y,是将上面的a,b换成x,y就得到计算的过程。

供参考!江苏吴云超祝你学习进步

以上就是关于c语言用辗转相除法将一个十进制整数转换成任意非十进制数(二、八、十六)全部的内容,包括:c语言用辗转相除法将一个十进制整数转换成任意非十进制数(二、八、十六)、C语言程序:用“辗转相除法”求两个正整数的最大公约数(程序填空)、用“辗转相除方法”计算两个数 x,y 的最大公约等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9739915.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存