Java 这段代码如何打印相同的素数?

Java 这段代码如何打印相同的素数?,java,Java,此代码打印数字的素数因子。 我想知道它是如何将同一个素数打印两次的 例:45=>3.3.5 // get the number for(int i = 2; i< number; i++) { while(number%i == 0) { System.out.println(i+" "); number = number/i; } } if(number >2) { System.out.println(n

此代码打印数字的素数因子。 我想知道它是如何将同一个素数打印两次的 例:45=>3.3.5

// get the number

  for(int i = 2; i< number; i++) {
     while(number%i == 0) {
        System.out.println(i+" ");
        number = number/i;
     }
  }
  if(number >2) {
     System.out.println(number);
  }
//获取号码
for(int i=2;i2){
系统输出打印项次(编号);
}

理解代码所做的事情的最简单/最好的方法是运行代码。您可以尝试使用调试器,但我们也可以尝试总结如下:

i = 2
nothing happens, because 45 is not divisible by 2

i = 3
the while loop iterates twice, printing 3 twice, and also setting
number = 45 -> 15 -> 5

i = 4
nothing happens, because 45 is not divisible by 4

i = 5
the while loop iterates once, printing 5 once, and setting number = 5 / 5 = 1

此时,外部
for
循环失败,因为当i=3时,
i=5
number=1
,而循环迭代两次。 在第一次迭代中,它将打印3并更新number=15的值 随着数字的更新,它将再次迭代。 在第二次迭代中,它将再次打印3并更新number=5的值
现在,(5%3==0)是不可能的,所以它不会第三次迭代

只要
i
是一个因素,内部循环就会重复这个过程。只需在一张纸上运行代码即可
i=2
是一个no op,因为
45
不能被
2
整除。对于
i=3
,while循环将执行两次,打印
3
两次。然后,它将在以后为
i=5
打印
5
。请尝试调试it@TimBiegeleisen你为什么不把它贴出来作为答案呢?对于次要/愚蠢的问题,在评论中给出答案是否是你个人的选择?因为这是很常见的情况,我只是好奇!谢谢,谢谢你,我完全明白了。