-2

例 60 の場合、答えは 2 2 3 5 になるはずですが、2 3 5 しか出てきません。

import java.util.Scanner;

public class PrimeFactor {

    public static void main(String[] args) {

        System.out.print("Enter a positive number: ");

        Scanner scanner = new Scanner (System.in);

        int number = scanner.nextInt();

        int count;

        for (int i = 2; i<=(number); i++) {
            count = 0;

            while (number % i == 0) {
                number /= i;
                count++;
                    }

            if (count == 0) {
                    continue;
            }
            System.out.print(i + " ");
        }
    }
}
4

2 に答える 2

0

問題は、60 が 2 で割り切れることが判明すると、それを 2 で割り続ける (この場合は 2 回) ことです。

while ステートメントの最後のブラケットを System.out.print の後に配置すると、機能します。

public static void main(String[] args) {

        System.out.print("Enter a positive number: ");

        Scanner scanner = new Scanner (System.in);

        int number = scanner.nextInt();

        int count;

        for (int i = 2; i<=(number); i++) {
            count = 0;

            while (number % i == 0) {
                number /= i;
                count++;


            if (count == 0) {
                    continue;
            }
            System.out.print(i + " ");
            }
        }
    }
于 2013-03-31T22:13:48.310 に答える
0

別の方法が必要な場合は、次のようにします。

import java.util.*;
import java.lang.*;

class Main
{
        public static void main (String[] args) throws java.lang.Exception
        {
            System.out.print("Enter a positive number: ");
            Scanner scanner = new Scanner (System.in);

            int number = scanner.nextInt();

            int divisor = 2;
            while(number != 1) {
            if(number % divisor == 0) {
                System.out.println(divisor + " ");
                number /= divisor;
            }
            else {
                divisor++;
            }
        }
    }
}
于 2013-03-31T22:20:49.037 に答える