Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaで数の一意な素因数の積を求めるプログラム


ある整数の一意な素因数(重複しない素因数)の積を求めるためのJavaコードは以下の通りです。

public class Demo {
    public static long prime_factors(int num){
        long my_prod = 1;
        for (int i = 2; i <= num; i++){
            if (num % i == 0){
                boolean is_prime = true;
                for (int j = 2; j <= i / 2; j++){
                    if (i % j == 0){
                        is_prime = false;
                        break;
                    }
                }
                if (is_prime){
                    my_prod = my_prod * i;
                }
            }
        }
        return my_prod;
    }
    public static void main(String[] args){
        int num = 68;
        System.out.println("The product of unique prime factors is ");
        System.out.print(prime_factors(num));
    }
}

出力

The product of unique prime factors is
34

コードの解説

「Demo」という名前のクラスには、静的メソッド「prime_factors」が定義されています。このメソッドは、引数として渡された数値の素因数を求め、重複を除いた一意な素因数のみを抽出し、それらの積を変数に格納して返します。

処理の流れは次の通りです。まず外側のforループで、2から入力された数値までの各整数iについて、numがiで割り切れるかどうかを判定します。割り切れる場合、iはnumの約数であることがわかります。

次に、内側のforループを使用して、その約数iが素数かどうかをチェックします。2からi/2までの整数のうち、iを割り切れるものが1つでも存在すれば、iは素数ではないと判断されます。

iが素数であると確認できた場合のみ、その値を結果格納用の変数my_prodに掛け合わせます。この仕組みにより、同じ素因数が複数回掛け合わされることを防ぎ、一意な素因数だけの積を正しく求められます。

mainメソッドでは、対象となる数値(この例では68)が定義され、その値を引数としてprime_factorsメソッドが呼び出されます。68を素因数分解すると 68 = 2 × 2 × 17 となるため、一意な素因数は2と17であり、その積は34になります。最後に、計算結果と関連するメッセージがコンソールに表示されます。

  1. Pythonで数値の一意な素因数の積を求める方法

    この記事では、以下の問題文に対する解決策について学びます。問題文数値 n が与えられたとき、その数値が持つすべての一意な素因数の積を求めて返します。例入力: num = 11 出力: 積は 11説明ここでは、入力された数値は 11 であり、素因数は 11 のみです。したがって、その積は 11 となります。アプローチ1:総当たり法i = 2 から n+1 までの for ループを使用し、i が n の因数であるかどうかを確認します。因数であれば、さらに i 自体が素数かどうかを判定し、素数であれば product 変数に積を格納します。この処理を i が n になるまで繰り返します。コード例de

  2. Pythonプログラム:数の一意な素因数の積を求める方法

    はじめに 本記事では、次の問題に対する解き方を学びます。 問題文: 整数 n が与えられたとき、その数が持つ一意な(重複しない)素因数をすべて求め、それらの積を返します。 例: 入力:num = 11 出力:積は 11 説明: 入力された数は 11 で、素因数は 11 のみです。 したがって、その積も 11 となります。 アプローチ1:総当たり法(ブルートフォース) i = 2 から n+1 までの for ループを使い、i が n の約数であるかどうかを確認します。約数であれば、さらに i 自身が素数かどうかを判定し、素数なら積に掛け合わせます。この処理を i が n に達するまで繰り返しま