繁体   English   中英

找出整数的素数

[英]Find the prime factors of an integer

public class Exercise {

    public static void main(String[] args) {

        int integer;
        int num = 2;//a number to be tested for primeness
        int count = 0;//count the number of prime numbers

        Scanner keyboard = new Scanner(System.in);
        System.out.println("Please enter a number");
        integer = keyboard.nextInt();

        while (count <= integer) {
            boolean isPrime = true;//is current number prime
            //test wether number is prime

            for (int i = 2; i <= num / 2; i++) {
                if (num % i == 0) {//if true number is not prime
                    isPrime = false;//set is prime to false
                    break;//exit the loop
                }
            }

            if (isPrime) {
                count++;
                System.out.print(num);
            }

            num++;
        }
    }
}

嗨,我需要该程序仅打印整数的最小因数,例如,如果输入为60,则输出为2,3,5。 它做到了,但同时也增加了许多其他上升的主要因素。 有什么建议么? 谢谢

您的循环条件是要打印第一个“ x”素数,因此,如果输入60,它将打印第一个60素数。 那是2,3,5,7,11 ...

请像这样修改您的代码以获得所需的输出(只需替换整个循环)

while (num <= integer) { //Changed the condition here to 
        //stop when the number reached integer and not count 
        boolean isPrime = true;//is current number prime
        //test wether number is prime

        for (int i = 2; i <= num / 2; i++) {
            if (num % i == 0) {//if true number is not prime
                isPrime = false;//set is prime to false
                break;//exit the loop
            }
        }
        if (isPrime && integer % num == 0) {// added an additional check that
        // print the number only if it is prime and 
        // it is divides the integer with an remainder of 0
            System.out.println(num);
        }
        num++;
}

输入60,您将输出为

2 3 5

请注意,您不再需要count变量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM