四个数的最大公约数 函数的调用

本文通过实例展示了如何使用函数调用解决四个数的最大公约数问题,提供了清晰的编程逻辑与输出结果,强调了熟悉函数调用的重要性。

上机目的:练习函数的调用

上机任务:完成四个数的最大公约数

/*
* 程序的版权和版本声明部分
* Copyright (c)2012, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: fun.cpp
* 作 者:王飞
* 完成日期:2012 年11 月 14日
* 版本号: v1.0
* 对任务及求解方法的描述部分:运用函数的调用来解决四个数的最大公约数
* 输入描述:略
* 问题描述:略
* 程序输出:如下
*/
#include <iostream>
using namespace std;
int gcds(int x,int y,int z,int w);  //函数的声明
int main()
{  
	int a,b,c,d;
	cout<<"请输入四个数:"<<endl;
	cin>>a>>b>>c>>d;
	cout<<"四个数的最大公约数是:"<<gcds(a,b,c,d)<<endl;
	return 0;
}
int gcds(int x,int y,int z,int w)
{   
	int min ,min1,min2;
	if(x>y){
		min1=y;
	}
	else{
		min1=x;	
	}
	if(z>w){
		min2=w;
	}
	else{
		min2=z;
	}
	if(min1>min2){
		min=min2;
	}
	else{
	min=min1;
	}
    while (true){   
		if(x%min==0&&y%min==0&&z%min==0&&w%min==0){         //判断公式   
			return min;  
			break;  
		}  
        min--; 
	}
}


 


输出结果:

心得体会:熟悉函数的调用!

### 计算个数最大公约数 在C语言中,计算个数最大公约数(GCD)可以通过逐次计算两个最大公约数来实现。具体做法是先计算前两个的GCD,再将该结果与第三个数计算GCD,最后将得到的结果与第个数计算GCD。这一方法基于以下公式: $$ \text{GCD}(a, b, c, d) = \text{GCD}(\text{GCD}(\text{GCD}(a, b), c), d) $$ 这种方法利用了欧几里得算法,通过取余运算逐步缩小值,直到余为零,最终的非零余即为最大公约数 [^1]。 ### 示例代码 以下是一个完整的C语言程序,用于计算个整最大公约数: ```c #include <stdio.h> // 计算两个最大公约数(GCD)使用欧几里得算法 int gcd_two(int a, int b) { while (b != 0) { int temp = b; b = a % b; a = temp; } return a; } // 计算个数最大公约数 int gcd_four(int a, int b, int c, int d) { int gcd_ab = gcd_two(a, b); int gcd_abc = gcd_two(gcd_ab, c); return gcd_two(gcd_abc, d); } int main() { int num1, num2, num3, num4; // 用户输入个整 printf("Enter four integers: "); scanf("%d %d %d %d", &num1, &num2, &num3, &num4); // 计算并输出最大公约数 printf("The Greatest Common Divisor (GCD) of %d, %d, %d, and %d is: %d\n", num1, num2, num3, num4, gcd_four(num1, num2, num3, num4)); return 0; } ``` ### 程序说明 - **gcd_two** 函数:实现了两个最大公约数计算,使用了经典的欧几里得算法,通过循环取余直到余为零 [^1]。 - **gcd_four** 函数:通过多次调用 `gcd_two` 函数,依次计算个数最大公约数 [^1]。 - **main** 函数:负责接收用户输入的个整调用 `gcd_four` 函数并输出结果。 ### 优化建议 - **输入验证**:可以增加对输入值的验证,确保输入的值为正整。 - **类型扩展**:如果需要处理更大的值,可以使用 `long` 或 `long long` 类型,以避免溢出。 - **代码复用**:该方法可以轻松扩展到任意量整最大公约数计算,只需依次调用 `gcd_two` 函数即可 [^3]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值