[ad_1]
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
それはうまくいかないので、あなたはしません。
この 2 つの言語は同じ環境では動作しません。コード自体を「翻訳」することは可能かもしれませんが、それらを取り巻くフレームワークは大きく異なります。 まず第一に、あなたが示している Java コードは、Javascript にはないコマンド ライン パラメータで動作します。
代わりに、宿題の質問に腰を下ろし、設定されたタスクを実行する独自のコードを作成してみてください (これは素因数に関係しているように見えます)。 コピー アンド ペーストの解決策ではコースに合格できません。最終試験に到達したときに、コピー アンド ペーストの解決策にアクセスできないためです…
解決策 7
Java と JavaScript は実際には 2 つの異なるプログラミング言語であるため、一方を他方に直接変換することはできません。 ただし、Java の多くの概念と構文は JavaScript の概念と類似しているため、多くの場合、Java コードを JavaScript に多少の努力で変換できます。
提供したコードを JavaScript に変換するには、次の変更を加える必要があります。
JavaScript には他のコード ファイルをインポートするという概念がないため、ファイルの先頭にある import ステートメントを削除します。
public クラス宣言を JavaScript 関数宣言に変更します。 たとえば、パブリック クラス EvaluateDivisors は次のように変更できます。
function EvaluateDivisors() { // class body goes here }
main メソッドを、コードの実行時に呼び出される JavaScript 関数に置き換えます。 たとえば、public static void main(String[] args) は次のように変更できます。
function run(args) { // main method body goes here }
Java データ型 (int、long など) を同等の JavaScript データ型 (Number、String など) に置き換えます。 たとえば、int 結果 = 0; let result = 0; に変更できます。
Java メソッド呼び出し (Long.parseLong など) を同等の JavaScript メソッド呼び出し (parseInt など) に置き換えます。 たとえば、 long a = Long.parseLong(args[0]); let a = parseInt(args[0]);.
残りの Java 構文を JavaScript 構文に変換します。 たとえば、for (int i = 0; i < 10; i++) は for (let i = 0; i < 10; i++) に変更できます。 これらの変更後のコードの例を次に示します。
function EvaluateDivisors() { function run(args) { try { let a = parseInt(args[0]); let b = parseInt(args[1]); let k = 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"); } console.log(solution(a, b, k)); } catch (e) { if (e instanceof IndexOutOfBoundsException) { error("Usage: EvaluateDivisors A B K"); } else if (e instanceof NumberFormatException) { error("Error: arguments must be integers"); } } } function solution(a, b, k) { if (prime(k)) { return primeSolution(a, b, k); } let result = 0; for (let n = Math.sqrt(a); n*n <= b; n++) { let divisors = 3; for (let m = 2; m < n && divisors <= k; m++) { if (n*n % m == 0) { divisors += 2; } } if (divisors == k) { result++; <pre> } return result; } function primeSolution(a, b, k) { let result = 0; let 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(n) { for (let m = 2; m <= Math.sqrt(n); m++) { if (n % m == 0) { return false; } } return true; } function error(message) { console.error(message); process.exit(1); } }
このコードは、変換されたコードがどのように見えるかの例にすぎないため、正しいとは限りません。 コードが期待どおりに動作することを確認するために、コードをテストおよびデバッグすることを常にお勧めします。
[ad_2]
コメント