【问题标题】:Trying to Find numbers that have 4 factors with Java Program but Output is Wrong尝试使用 Java 程序查找具有 4 个因数但输出错误的数字
【发布时间】:2021-02-23 06:41:21
【问题描述】:

我正在尝试制作一个 Java 程序,让用户知道他们的号码是否是 RSA 号码(或有 4 个因素)。该程序不断向我显示错误的输出。比如范围是11-15时,不是输出2,而是输出0。请指教。

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
    
        Scanner in = new Scanner(System.in);    
        int minimum = in.nextInt();    
        int maximum = in.nextInt();    
    
        int numOfFactors = 2;
        
        int numRSA = 0;
    
        int number = minimum;
    
        while (number>= minimum && number <= maximum){ 
            // condition for nonprime number
            for (int i = 2; i <= number/2; ++i) {
                if (number % i == 0 && number>=minimum && number<maximum) {
                    numOfFactors = numOfFactors + 1;
                }
            }
            if (numOfFactors == 4){
                numRSA = numRSA + 1;
            }
            number= number + 1;
        }
            
        System.out.println("The number of RSA numbers between " +minimum + " and " +maximum+ " is " +numRSA);
    
    }
}

【问题讨论】:

  • 您需要将 numOfFactors 设置回 0。
  • 很遗憾,这不起作用
  • 您是否在循环顶部将其设置回零?
  • 就像我把它从 2 改成了 0
  • 从我的理解来看是的,在循环的顶部

标签: java variables input output


【解决方案1】:

你需要在while循环中初始化numOfFactors

while (number <= maximum){ 
    int numOfFactors =2;
    // condition for nonprime number
    for (int i = 2; i <= number/2; ++i) {
        if (number % i == 0) {
            numOfFactors++;
        }
    }
    if (numOfFactors == 4){
        numRSA++;
    }
    number++;
}

您需要为每个数字重新设置它,然后只有变量将具有该特定数字的因子数。在当前代码中,它存储了导致该问题的因素的总和。 (例如:在12 之后,因子的数量将是6,它不会被重置)

【讨论】:

  • 谢谢!做到了,它适用于 10 到 12 的范围,但不适用于 11 到 15 之类的另一个示例。还有其他建议吗?
  • 我完全明白你重置它的意思!只是对于像 11-15 这样的范围,它显示 '1' rsa num 而不是 2
  • @Henry 我已经更新了。 number&gt;=minimum &amp;&amp; number&lt;maximum 这个条件不需要使用。第一个条件将始终评估为true,第二个条件将跳过最后一个数字。对于11-15,具有 4 个因数的数字是 14 和 15。因此这些条件将跳过15,因为输出变为1 而不是2。我已经更新了答案
  • @Henry 在while 循环中不需要number&gt;=minimumnumber 已经初始化为 minimum 并且在代码的任何部分都不会递减。所以number&gt;=minimum 永远是true。这样也可以从 while 循环中避免这种情况
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-03
  • 1970-01-01
  • 2018-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-02
相关资源
最近更新 更多