2个数比较的话 用离散数学里学的 辗转相除法 class A { public int f(int a,int b) { if (a < b) { int temp = 0; temp = a; a = b; b = temp; } int r = a % b; while (r != 0 ) { a = b; b = r; r = a % b; } return b; } } LZ 改造一下就行了
import java.util.*; public class commondivisor { public static void main(String args[]) { Scanner read=new Scanner(System.in); int n1,i,j,k,num=1; System.out.println("请输入你要输入的个数 :"); n1=read.nextInt(); System.out.println("请输入"+n1+"整数:"); int arry[]=new int[n1]; for(i=0;i<n1;i++) { arry[i]=read.nextInt(); } for(j=1;j<=arry[0];j++) { for(k=0;k<n1;k++) { if(arry[k]%j!=0) break; } if(k==n1) num=j; } System.out.println("这几个数的最大公约数为:"+num); } }
import java.util.*; public class commondivisor { public static void main(String args[]) { Scanner read=new Scanner(System.in); int n1,i,j,k,num=1; System.out.println("请输入输入的个数 :"); n1=read.nextInt(); System.out.println("请输入"+n1+"整数:"); int arry[]=new int[n1]; for(i=0;i <n1;i++) { arry[i]=read.nextInt(); } for(j=1;j <=arry[0];j++) { for(k=0;k <n1;k++) { if(arry[k]%j!=0) break; } if(k==n1) num=j; } System.out.println("最大公约数为:"+num); } }
试试这个: package practice;import java.util.Arrays;import javax.swing.JOptionPane;//最大公约数 public class GreatestCommonDivisor { public static void main(String[] args) { int num=Integer.parseInt(JOptionPane.showInputDialog("请输入数字的个数:")); int a[]=new int[num]; for(int i=0;i<num;i++ ){
class A {
public int f(int a,int b) {
if (a < b) {
int temp = 0;
temp = a;
a = b;
b = temp;
}
int r = a % b;
while (r != 0 ) {
a = b;
b = r;
r = a % b;
}
return b;
}
}
LZ 改造一下就行了
public class commondivisor
{
public static void main(String args[])
{
Scanner read=new Scanner(System.in);
int n1,i,j,k,num=1;
System.out.println("请输入你要输入的个数 :");
n1=read.nextInt();
System.out.println("请输入"+n1+"整数:");
int arry[]=new int[n1];
for(i=0;i<n1;i++)
{
arry[i]=read.nextInt();
}
for(j=1;j<=arry[0];j++)
{
for(k=0;k<n1;k++)
{
if(arry[k]%j!=0)
break;
}
if(k==n1)
num=j;
}
System.out.println("这几个数的最大公约数为:"+num);
}
}
public class commondivisor
{
public static void main(String args[])
{
Scanner read=new Scanner(System.in);
int n1,i,j,k,num=1;
System.out.println("请输入输入的个数 :");
n1=read.nextInt();
System.out.println("请输入"+n1+"整数:");
int arry[]=new int[n1];
for(i=0;i <n1;i++)
{
arry[i]=read.nextInt();
}
for(j=1;j <=arry[0];j++)
{
for(k=0;k <n1;k++)
{
if(arry[k]%j!=0)
break;
}
if(k==n1)
num=j;
}
System.out.println("最大公约数为:"+num);
}
}
package practice;import java.util.Arrays;import javax.swing.JOptionPane;//最大公约数
public class GreatestCommonDivisor { public static void main(String[] args) {
int num=Integer.parseInt(JOptionPane.showInputDialog("请输入数字的个数:"));
int a[]=new int[num];
for(int i=0;i<num;i++ ){
a[i]=Integer.parseInt(JOptionPane.showInputDialog("请输入第"+(i+1)+"个数字"));
}
Arrays.sort(a);
for(int i=1;i<=a[0];i++){
for(int j=0;j<a.length;j++){
if(a[j]%i!=0)
break;
}
if(i==a[0]) JOptionPane.showMessageDialog(null, "最大公约数为:"+i);
}
}}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ZuiDaGongYue { public static void main(String[] args){
int count=readANumber("你需要求几个数的公约数?");
int[] numbers=new int[count];
for(int i=0; i<count;i++){
numbers[i]=readANumber("请输入第 "+(i+1)+"\t个数:");
}
System.out.println("计算中,请稍候...");
int result=find(numbers);
System.out.println("最小公约数为:"+result);
}
private static int find(int[] number){
int min=Integer.MAX_VALUE;
for(int i=0; i<number.length;i++){
if (number[i]<min){
min=number[i];
}
}
boolean find=false;
while(min>0 && !find){
find=true;
for(int i=0; i<number.length;i++){
if (((number[i]/min)*min)!=number[i]){
find=false;
break;
}
}
if (!find){
min--;
}
}
if (min==0){
System.out.println("没有找到!");
}
return min;
}
private static int readANumber(String hint){
System.out.println(hint);
BufferedReader r=new BufferedReader(new InputStreamReader(System.in));
String curLine;
Integer num=null;
do{
try {
curLine=r.readLine();
num=Integer.parseInt(curLine);
} catch (IOException e) {
}
if (num==null){
System.out.println("您必须输入数字,请重新输入:");
}
}while(num==null);
return num.intValue();
}
}