首页 > 解决方案 > 查找用户使用 while 循环输入的整数的所有因子的 Java 代码

问题描述

因此,目前,我正在编写一段代码,该代码将确定整数是否为素数,并且工作得非常好,因为我已经使用不同的素数和非素数整数对其进行了多次测试。现在,我必须通过列出任何给定整数的所有因子来结束它,我只是不知道该怎么做。下面是我当前的程序,没有我需要的因素部分。我不知道从哪里开始,因为我对“while 循环”并不是特别擅长,因为我们今天刚刚了解了它们。

这就是我必须做的,“程序应该使用适当的格式给出整数的所有因子的输出,以便因子清晰。它应该输出“(输入)的因子是:”如果整数输入是 1 和它本身,程序应该声明:“这是一个素数!” 如果它不是质数,则什么也不打印。”

对此的任何帮助将不胜感激。谢谢!

 import java.util.*;
 public static void main(String[] args) {
    Scanner console = new Scanner(System.in);
    System.out.println("What is the number that you have chosen?");
    int num = console.nextInt();
    int div = 2;
    boolean run = false;
    System.out.println("The factors of " + num + " are:");
    while (div <= Math.sqrt(num)) {
        if (num % div == 0) {
            System.out.println(div + " , " + num/div);
            div++;
            run = true;
        } else {
            div++;
        }
    }
    if (run == false) {
        System.out.print("This is a prime number!");
    }
}
}

标签: javawhile-loopfactors

解决方案


boolean isPrime = true;
for(int i = 2; i <= num/2; i++){
    if(num % i == 0) {
        System.out.println("The factors of " + num + " are:" + i);
        isPrime = false;
    }
}
if(isPrime) {
    System.out.print("This is a prime number!");
}

我想让你思考的是为什么我只运行循环到 num/2 而不是直到 num?让我知道你是否能弄清楚。


推荐阅读