Rajeshyadav12 Ответов: 1

Как преобразовать Java код в JavaScript


am struggling to convert Java code into javascript. For that, for example, I am converting public static int primesolution into function primesolution. I do not have much idea whether I am on the right track of converting it. I am stuck with public static void main(String[] args). How to convert this function into Javascript. Any help is highly appreciated.


import java.lang.Math;
public class EvaluateDivisors {

     public static void main(String[] args) {
        try {
            long a = Long.parseLong(args[0]);
            long b = Long.parseLong(args[1]);
            int k = Integer.parseInt(args[2]);

            if (a <= 1 || b <= a) {
                error("Error: must have 1 < A < B");
            }
            if (k <= 0 || k % 2 == 0) {
                error("Error: K must be a positive odd number");
            }
            System.out.println(solution(a, b, k));
        } catch (IndexOutOfBoundsException e) {
            error("Usage: EvaluateDivisors A B K");
        } catch (NumberFormatException e) {
            error("Error: arguments must be integers");
        }
    }


    private static int solution(long a, long b, int k) {


        if (prime(k)) {
            return primeSolution(a, b, k);
        }
        int result = 0;

         for (long n = (long) Math.sqrt(a); n*n <= b; n++) {

           int divisors = 3;


            for (long m = 2; m < n && divisors <= k; m++) {
                if (n*n % m == 0) {
                    divisors += 2;
                }
            }
            if (divisors == k) {
                result++;
            }
        }
        return result;
    }


      private static int primeSolution(long a, long b, int k) {
        int result = 0;


        int n = 2;
        while (Math.pow(n, k - 1) < a) {
            n++;
        }
        while (Math.pow(n, k - 1) <= b) {
            if (prime(n++)) {
                result++;
            }
        }
        return result;
    }


    private static boolean prime(int n) {

        for (int m = 2; m <= Math.sqrt(n); m++) {
            if (n % m == 0) {
                return false;
            }
        }
        return true;
    }
    private static void error(String message) {
        System.err.println(message);
        System.exit(1);
    }

}


Что я уже пробовал:

function EvaluateDivisors {

    function main(String[] args) {
        try {
            long a = Long.parseLong(args[0]);
            long b = Long.parseLong(args[1]);
            int k = Integer.parseInt(args[2]);

            if (a <= 1 || b <= a) {
                error("Error: must have 1 < A < B");
            }
            if (k <= 0 || k % 2 == 0) {
                error("Error: K must be a positive odd number");
            }
            System.out.println(solution(a, b, k));
        } catch (IndexOutOfBoundsException e) {
            error("Usage: EvaluateDivisors A B K");
        } catch (NumberFormatException e) {
            error("Error: arguments must be integers");
        }
    }


    function solution(long a, long b, int k) {

        if (prime(k)) {
            return primeSolution(a, b, k);
        }
        int result = 0;

        for (long n = (long) Math.sqrt(a); n*n <= b; n++) {

            int divisors = 3;

            for (long m = 2; m < n && divisors <= k; m++) {
                if (n*n % m == 0) {
                    divisors += 2;
                }
            }
            if (divisors == k) {
                result++;
            }
        }
        return result;
    }

    function primeSolution(long a, long b, int k) {
      int result = 0;

       int n = 2;
      while (Math.pow(n, k - 1) < a) {
          n++;
      }
      while (Math.pow(n, k - 1) <= b) {
          if (prime(n++)) {
              result++;
          }
      }
      return result;
  }


        function prime(int n) {
        for (int m = 2; m <= Math.sqrt(n); m++) {
            if (n % m == 0) {
                return false;
            }
        }
        return true;
    }

    function error(String message) {
        console.log(message);
        System.exit(1);
    }

}

1 Ответов

Рейтинг:
1

OriginalGriff

А ты-нет, потому что это не сработает.
Эти два языка не работают в одних и тех же средах, и хотя возможно "перевести" сам код, структура вокруг них очень и очень различна. Во-первых, Java-код, который вы показываете, работает с параметрами командной строки, которых у Javascript просто нет.

Вместо этого сядьте со своим домашним заданием и попробуйте написать свой собственный код, чтобы выполнить поставленную задачу (которая, по-видимому, имеет какое-то отношение к простым факторам). Вы не пройдете свой курс с помощью copy'n'paste solutions, потому что, когда вы доберетесь до выпускного экзамена, у вас не будет никакого доступа к решениям для копирования и вставки...