欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第二章作业说明

程序员文章站 2022-07-14 20:01:19
...

一、题目名称:求n个数的最大公约数和最小公倍数
二、题目内容:求N个数的最大公约数和最小公倍数.用C或C++或java或python语言实现程序解决问题。
三、算法设计:
1.利用辗转相除法来求出两个数的最大公约数.
2.将输入的n个数放进数组a[100]中.
3.求解每两个数的最大公约数,最后得到n个数的最大公约数.
4.求出两个数的最大公约数后,若k是a和b的最大公约数,那么a和b的最小公倍数为ab/k.
5.遍历一次数组求出n个数的最小公倍数。.
第二章作业说明
四、调试与测试:
调试:第二章作业说明第二章作业说明

测试:
1.测试输入的n<2时的情况 第二章作业说明
2.测试输入的数有等于0时的情况 第二章作业说明
3.正常情况第二章作业说明
五、遇到的困难及解决方案:
在程序编写的过程中由于才开始学java语言,导致初期各种语法错误,通过在网上查找资料,不断完善程序,同时学习到了java的一些常用语句和语法.
测试时输入了带有0的一组数,导致输出错误.然后就加入了INSPECT()函数来检查输入数据的正确性.

六、源代码

import java.util.Scanner;

public class a {
	public static void main(String[] args){
		Scanner input= new Scanner(System.in);
		int i;
		int k=1;
		int a[]=new int[100];
		System.out.println("本程序是用来计算n个数的最大公约数(gcd)和最小公倍数(lcm)的.");
		System.out.println("那么你要求几个数的gcd和lcm呢?");
		System.out.println("这几个数的数值又是多少?");
		System.out.print("请输入n的数值(n>=2):");
		int n=input.nextInt();    //确定要求几个数的最大公约数和最小公倍数
	    while(n<2)                //判断n个数的n是否小于2,输入数据的正确性验证     
		{
			System.out.print("输入错误,请重新输入:");
			n=input.nextInt();
		}
		while(k==1) 
		{
			System.out.print("输入"+n+"个数字:");
			for(i=0;i<n;i++) 
			{
				a[i]=input.nextInt();
			}
			k=INSPECT(a,n);       //判断输入的数字中是否有0 
	    }
		System.out.println("这"+n+"个数的最大公约数为:"+n_gcd(a,n));
		System.out.println("这"+n+"个数的最小公倍数为:"+n_lcm(a,n));
	}
	
	
	//求两个数的最大公约数
	static int two_gcd(int a,int b)
	{
		int temp;
		if(a<b)             //使得a大于b
		{
			temp=a;
			a=b;
			b=temp;
		}
		while(b!=0)         //通过循环求两个数的余数
		{                   //直到余数为0
		temp=a%b;
		a=b;
		b=temp;
		}
		return(a);
	}
	
	//求n个数的最大公约数
	static int n_gcd(int a[],int n)
	{int i;
	int c=a[0];
	for(i=1;i<n;i++)       //用for循环 调用求两个最大公约数的函数来求n个数的最大公约数
	{c=two_gcd(c,a[i]);}
	return c;
	}
	
	//求两个数的最小公倍数
	static int two_lcm(int x,int y)
	{
		return x*y/two_gcd(x,y);
	}
	
	//求n个数的最小公倍数
	static int n_lcm(int a[],int n)
	{
		int i;
		int s=1;
		for(i=0;i<n;i++)
		{s=two_lcm(s,a[i]);}
		return s;
	}
	
	//判断输入的数字中是否有0 ,输入数据的正确性验证
	static int INSPECT(int a[],int n) {
		for(int i=0;i<n;i++)
		{
			if(a[i]==0)
			{System.out.println("输入的数字中有0,错误!!!!");
			return 1;
			}
		}
		return 0;
	}
	
}
相关标签: java