题目一
求N个数的最大公约数和最小公倍数。用C或C++或java或python语言实现程序解决问题。
要求: 1.程序风格良好(使用自定义注释模板)
2.提供友好的输入输出,并进行输入数据的正确性验证。
分析:用辗转相除法能得到两个数的最大公约数;
把N个数存入数组,依次对数组类的两个数进行辗转相除
程序流程图:
代码:
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class MutilDivisor {
List<Integer> list = null;
public int divisor (int a,int b) /*自定义函数求两数的最大公约数*/
{
int temp; /*定义整型变量*/
if(a<b) /*通过比较求出两个数中的最大值和最小值*/
{
temp=a;a=b;b=temp;} /*设置中间变量进行两数交换*/
while(b!=0) /*通过循环求两数的余数,直到余数为0*/
{
temp=a%b;
a=b; /*变量数值交换*/
b=temp;
}
return (a); /*返回最大公约数到调用函数处*/
}
public int gcd (int a,int b)
{
if(a%b==0)
return b;
else
return gcd(b,a%b);
}
//求多个数据的最大公约数
public int muti() {
int temp = list.get(0);
for(int i=1;i<list.size();i++)
{
temp = divisor