2016-11-18 5 views
0

Я пытаюсь выполнить программу, которая использует алгоритм Евклида, чтобы найти GCD двух чисел. Алгоритм Евклида говорит, что вы делите большое число на небольшое число и берете этот остаток и делите первоначальное небольшое число на остаток, и вы продолжаете делать это, пока не получите нуль. Моя программа распечатывает остаток и небольшое число, но я хочу найти GCD и распечатать каждый шаг (каждый номер, который проходит через программу).GCD-программа с использованием алгоритма Евклида

import java.util.Scanner; 
import java.util.Random; 

public class GCD{ 

    public static void main(String [] args){ 

     Scanner reader = new Scanner(System.in); 

     double n1; 
     double n2; 
     double firstOperation; 
     double smallNum; 
     double nextOperation; 

     System.out.println("Enter the first number (positive) "); 
     n1 = reader.nextDouble(); 

     System.out.println("Enter the second number (positive)"); 
     n2 = reader.nextDouble(); 

     if (n1 > n2){ 
      smallNum = n2; 
      firstOperation = n1 % n2; 
      System.out.println (firstOperation); 
     } 
     if (n1<n2){ 
      smallNum = n1; 
      firstOperation = n2 % n1; 
      System.out.println (firstOperation); 
     } 
     while (firstOperation >0) 
      nextOperation = smallNum % firstOperation ; 
      //System.out.println(nextOperation); 
     } 
    } 
} 
+0

JAVA НЕ JAVASCRIPT !!!!!!!!! –

+0

Первое использование Int для всех вас variabe вместо double – Idali

+0

Во-вторых, ваш цикл while будет работать вечно, потому что 'firstOperation' никогда не изменяется – Wiebe

ответ

0
public static int gcd(int a, int b) { 
    System.out.println(String.format("Calculating GCD of %d and %d", a, b)); 
    if(b == 0) { 
     return a; 
    } 
    return gcd(b, a % b); 
} 
Смежные вопросы