-1

私は数の最大の因数を示すべきであり、それも素数でなければならないアプリケーションに取り組んでいます。

それが私のアプリです:

public class BiggestFactor {

public static void main(String[] args) {

    double dev = 0d;
    for (double j = 0; j < 984654354654d; j++) {

        if (984654354654d % j == 0) {
            dev = j;
        }

        // show dev when is a prime number
        double i;
        for (i = 2; i < dev; i++) {

            double n;
            n = dev % i;

            if (n == 0) {
                // do nothing - not a prime number
                break;
            }
        }
        if (i == dev) {
            System.out.println(dev);
        }
    }
}
}

そして私の質問は、結果として最後の数字だけを取得する方法ですか?私の場合、たくさんの数字が表示されます。

4

3 に答える 3

3

最小限の変更は、新しい変数を宣言することですresult

    double result = -1;

を印刷する代わりにdev、単にその値を に保存しますresult

        if (i == dev) {
            result = dev;
        }

次に、関数の最後に次を出力しますresult

    System.out.println(result):
于 2013-02-28T00:26:07.000 に答える
1
public class BiggestFactor 
{
    public static void main(String[] args) 
    {
        double dev = 0d;
        double last = dev;
        for (double j = 0; j < 984654354654d; j++) 
        {
            if (984654354654d % j == 0) 
            {
                dev = j;
            }
            double i;
            for (i = 2; i < dev; i++) 
            {
                double n;
                n = dev % i;
                if (n == 0) 
                {
                    break;
                }
            }
            if (i == dev) 
            {
                last = dev;
            }
        }
        System.out.println(last);
    }
}
于 2013-02-28T00:29:43.267 に答える
0

少しリファクタリングを行い、素数をチェックするロジックを別の関数に移動して、理解を深めました。また、番号をに変更して1001、検証速度を上げます:P

public class BiggestPrimeFactor {

    public static void main(String[] args) {

        double dev = 0d;

        double numberToCheck = 1001d;

        for (double j = 0; j <= numberToCheck / 2; j++) {

            if (numberToCheck % j == 0 && isPrime(j)) {

                dev = j;

            }
        }

        System.out.println(dev);
    }

    private static boolean isPrime(double n) {
        boolean prime = true;

        for (long i = 2; i <= n / 2; i += 2) {

            if (n % i == 0) {

                prime = false;
                break;

            }
        }

        return prime;
    }
}

dev基本的に、現在の最大の素因数になるように継続的に更新するとはどういうことですか。

于 2013-02-28T00:37:03.230 に答える