我想找到两个数字计数值的公因数?

时间:2016-10-24 19:57:18

标签: java

代码:

public static void main(String... args){
    Scanner sc = new Scanner(System.in);
    int count =0;
    int a= sc.nextInt();
    int b =sc.nextInt();
    if(a>b){
        //int count =0;
        for(int i =1;i<=a;i++){
            if(a/i == 0 && b/i == 0){
                count++;
                System.out.println(count);
            }
        }
    }else if(a<b){
        //int count =0;
        for(int i=1;i<=b;i++){
            if(a/i == 0 && b/i == 0){
                count++;
                System.out.println(count);
            }
        }
    }
}
  1. 我没有得到任何输出什么是错误?
  2. 我想从用户那里获取输入,然后找到常见因素的数量。

2 个答案:

答案 0 :(得分:0)

if((a/i == 0)&&(b/i == 0))

这种情况有误 - 如果a / i为零,或者a小于i,则%只会为零。这显然不是你想要的。

这里需要的是模运算符if((a%i == 0)&&(b%i == 0)) ,它在将两个操作数相互划分时返回余数。

simple_triplet_matrix

在这两个位置进行此更改后,您的程序似乎正常运行。

答案 1 :(得分:0)

更精确些。 如果a

   Scanner s = new Scanner(System.in);
    long n = s.nextLong();   
    long m=s.nextLong();
    int small=0;
    int count=0;

    if(n==0 || m==0){
        System.out.println(count);
        return;

    }

    if(n<m) 
       small=(int)n/2;
   else
    small=(int)m/2;

     count=1;

    for(int i=2;i<=small;i++){
        if(n%i==0 && m%i==0)
        count++;
    }
   if(n%m==0 || m%n==0)count++;

    System.out.println(count);