#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 的最大公约等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)