我在学校有个问题要解决,是这样的:
编写一个程序,读取大于1的正整数,然后按递增顺序打印出该数字的素数因子。如果数字是素数,请打印出该数字,然后再打印一条语句,说明它是素数,如其中一个示例所示。
然后我写了这个程序,当我输入一个实际的素数时,它有预期的行为。如果我输入97,输出将是“97是一个素数”应该是这样的。
但当我输入120时,它会打印“2 2 3 5是素数”,其中预期的行为只是打印数字,而不是“是素数”文本。
方法,该方法检查输入数是否为素数,如果是,则打印其因数:
public static void primeFactors(int n) {
while (n % 2 == 0) {
System.out.print(2 + " ");
n = n/2;
}
for (int i = 3; i <= Math.sqrt(n); i = i+2) {
while (n % i == 0) {
System.out.print(i + " ");
n = n/i;
}
}
if (n > 2) {
System.out.print(n + " is a prime number.");
}
}
主要方法:
公共静态void main(字符串[]args){
Scanner reader = new Scanner(System.in);
int n = reader.nextInt();
primeFactors(n);
}
所以我想得到一些帮助,弄清楚如何使“是一个素数”仅当输入的数字为素数时,才打印结束。
我敢肯定,如果你再玩一会儿,你会找到一个答案,但是在这里:我会写一个方法公共静态布尔isPrime(int n)
,然后:
if (isPrime(n)) {
System.out.print(bla bla bla...);
} else {
print here factors
}
另一个选项(有点难看)是,如果找到因子,请“记住”:注意布尔foundFactor
及其用法:
public static void primeFactors(int n) {
boolean foundFactor = false;
while (n % 2 == 0) {
foundFactor = true
System.out.print(2 + " ");
n = n/2;
}
for (int i = 3; i <= Math.sqrt(n); i = i+2) {
while (n % i == 0) {
foundFactor = true
System.out.print(i + " ");
n = n/i;
}
}
if (n > 2 && !foundFactor) {
System.out.print(n + " is a prime number.");
}
}
我确实尝试过创建一个方法来检查这个数字是否是素数。看起来是这样的:
private static boolean isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i < n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
但这也印出了最后的一句话/
您可以将参数n保存到变量中以保留它。
int input = n;
最后,将输出更改为以下内容:
if (n > 2) {
System.out.print(n);
}
if (n == input) {
System.out.print(" is a prime number.");
}
问题内容: 我正在研究用Java实现的素数分解程序。目的是找到最大的素因600851475143(项目Euler问题3)。我想我已经完成了大部分工作,但是却遇到了一些错误。而且我的逻辑似乎不对,特别是我为检查数字是否为质数而设置的方法。 编辑 问题答案: 为什么要这么复杂?您 不需要 像 isPrime() 这样的事情。除以最小除数(素数),然后从素数开始循环。这是我的简单代码:
问题内容: 我是一个相对较新的程序员,所以这可能是一个非常简单的问题,但是让我有些困惑。 我正在尝试将Java GUI的最终输出打印到打印机。现在,在我的GUI中,有了它,当您单击打印时,会弹出一个弹出窗口,列出可用的打印机,并根据您选择的打印机,将其打印到该打印机。 但是事实并非如此。我通过搜索互联网来解决此问题,从而获得了大部分代码,并找到了一些很有前途的代码。但是,它是从文件打印出来的。因此
我是编程新手,在运行这段代码时遇到困难。任何帮助都将不胜感激。程序需要使用while循环运行。
问题内容: 问题 在这个项目中,您将编写一个Java程序,该程序从标准输入中读取一个正整数n,然后打印出前n个素数。我们说,如果存在整数k使得m = kd,则整数m可被非零整数d整除,即,如果d被均分为m。等效地,如果将m的整数除以d,则m可被d整除。我们也可以通过说d是m的除数来表达这一点。如果正整数p的唯一正数是1和p,则称其为质数。此规则的一个例外是数字1本身,它被视为非素数。非素数的正整数
我有一个flask应用程序,只有一条路线,没有复杂的事情发生,运行在docker容器中。我一辈子都不能让print语句出现在日志中(
我有几个问题。我正在做家庭作业,但遇到了一些令人困惑的事情。(我上的是入门课,有错误,很抱歉。) 实现一个以整数数组和int x作为其大小的类。在类中创建一个方法,该方法创建一个长度比数据长度大1的新数组。然后创建一个方法,将所有数据元素复制到新数组中,并将x值添加到数组的最后一个元素中。创建一个方法来返回新数组中的所有整数。 这是我的 这只是返回NULL。 我的问题是上面任务的最后一点。“创建一