gpt4 book ai didi

java - 素因子构造函数

转载 作者:行者123 更新时间:2023-12-02 07:10:42 24 4
gpt4 key购买 nike

我正在创建两个类,构造类和主方法,我从用户输入中读取一个数字并吐出该数字的质因数分解,代码是用Java编写的。

例如:
输入号码:150
5
5
3
2

但是,对于我的程序,我获得了完整的因素列表。

示例:
输入号码:150
150
75
50
25
5
3
1

我如何改变它以获得质因数?

主要方法:

import java.util.*;

public class FactorPrinter
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.print("Enter a integer: ");
String input1 = scan.nextLine();
int input = Integer.parseInt(input1);
FactorGenerator factor = new FactorGenerator(input);
System.out.print(factor.getNextFactor());

while (!factor.hasMoreFactors())
{
System.out.print(factor.getNextFactor());
}
}
}

这是我的类(class):

public class FactorGenerator 
{
private int num;
private int nextFactor;

public FactorGenerator(int n)
{
num = nextFactor = n;
}

public int getNextFactor()
{
int i = nextFactor - 1 ;

while ((num % i) != 0)
{
i--;
}

nextFactor = i;
return i;
}

public boolean hasMoreFactors()
{
if (nextFactor == 1)
{
return false;
}
else
{
return true;
}
}
}

最佳答案

@Bohemian 已删除答案的更正版本:

for (int i = 2; input > 1 && i <= input; i++)
{
if (input % i == 0)
{
System.out.print(i+" ");
do
{
input /= i;
} while (input % i == 0);
}
}

有更快的算法,例如Knuth 计算机编程的艺术,第一卷,#4.5.4 算法 C,源自 Fermat,但请注意他的网站上有一个重要的更正。他给出了一个很好的测试值 8616460799L,因为它有两个相当大的质因数。

关于java - 素因子构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15563489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com