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

waox1234 2014-09-19 08:02:32
要求输出一个数的因子
比如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周,真是谢谢各位了
...全文
123 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
waox1234 2014-09-19
  • 打赏
  • 举报
回复
谢谢大家,果然我没有仔细思考程序运行以后的结果是啥 修改后这样是正确的
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(0 == i%factor)
			{
				if(flag)
				{
					System.out.printf(", ");
				}
				System.out.printf("%d",factor);
				i/=factor;
				factor=2;
				flag=true;
			}
			else
			{
				factor++;
			}
		}
		System.out.printf(".");

	}

}
waox1234 2014-09-19
  • 打赏
  • 举报
回复
引用 5 楼 ITWTI 的回复:
输入大于2的数字时,楼主的程序明显是进入死循环了
我好像懂了,除不尽的话factor难道也得自加! 我去再改一改
TheEndOfTimeSpace 2014-09-19
  • 打赏
  • 举报
回复
输入大于2的数字时,楼主的程序明显是进入死循环了
waox1234 2014-09-19
  • 打赏
  • 举报
回复
引用 3 楼 coolbamboo2008 的回复:
你的flag什么时候重新变回false?
我觉得不需要变回false吧,因为打印数字前一定有一个都好 跳出while循环以后flag就没关系了 因为while里面是2个if语句,因此应该是每个if都会执行吧。?
coolbamboo2008 2014-09-19
  • 打赏
  • 举报
回复
你的flag什么时候重新变回false?
waox1234 2014-09-19
  • 打赏
  • 举报
回复
引用 1 楼 rumlee 的回复:
你的程序我没看懂,求因数应该是非常简单的啊。如果是要求素因数那就要复杂一些了。特别是求一个很大的半素数的素因数。

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);
			}
		}
	}
}
嗯,我可能用语不是很严谨,从题意来看应该是素数的形式,而不能是单纯输出公约数,i逐渐应该变小 题目举例 120则从小到大输出2,2,2,3,5. 所以我程序中加了逗号和句号的输出
rumlee 2014-09-19
  • 打赏
  • 举报
回复
你的程序我没看懂,求因数应该是非常简单的啊。如果是要求素因数那就要复杂一些了。特别是求一个很大的半素数的素因数。

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);
			}
		}
	}
}

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧