当前位置: 代码迷 >> J2SE >> 新手java遇到了有关问题,多谢大家啊了
  详细解决方案

新手java遇到了有关问题,多谢大家啊了

热度:237   发布时间:2016-04-23 20:19:24.0
新手java遇到了问题,谢谢大家啊了
要求输出一个数的因子
比如10
就输出
2,5.这样
我按照一个循环想要将所有因子列出,直到输入数除因子到1

import java.util.Scanner;
public class DivisionFactor 
{

public static void main(String[] args) 
{
// TODO Auto-generated method stub
Scanner input = new Scanner (System.in);
System.out.printf("Enter a integer: ");
int i = input.nextInt();
int factor=2;
boolean flag=false;
while(i!=1)
{
if(flag)
{
System.out.printf(", ");
}
if(0 == i%factor)
{
System.out.printf("%d",factor);
i /= factor;
factor++;
flag=true;
}
}
System.out.printf(".");

}

}


但是实际上只有2正常输出了,其他数字可能无限输出字符,或者就不出结果
但是我没有看错逻辑错误

刚刚在选修课上学java没2周,真是谢谢各位了
------解决思路----------------------
你的程序我没看懂,求因数应该是非常简单的啊。如果是要求素因数那就要复杂一些了。特别是求一个很大的半素数的素因数。


import java.util.Scanner;

public class DivisionFactor {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.printf("Enter a integer: ");
int i = input.nextInt();
for (int j = 2; j <= i / 2; j++) {
if (i % j == 0) {
System.out.println(j);
}
}
}
}

------解决思路----------------------
你的flag什么时候重新变回false?
------解决思路----------------------
输入大于2的数字时,楼主的程序明显是进入死循环了
  相关解决方案