构建一个java程序,读取数字并说出它';s prime or列出了它的因子

构建一个java程序,读取数字并说出它';s prime or列出了它的因子,java,primes,Java,Primes,我的特定项目的目标是编写一个程序,提示用户输入两个整数。程序将读取这两个整数并决定它们是否为素数。如果不是,程序将列出因子,否则它将简单地打印“素数”,并反复要求用户输入两个整数。此外,程序应该打印两个给定整数之间的所有数字的因子以及整数本身。它还将给出素数的平均值 目标是使最终结果如下所示(假设两个整数分别为6和11): 请输入两个整数: 这是我的代码: 现在我不知道哪里出了问题,但我觉得我一定是朝着正确的方向前进了。如果两个输入都是素数,它将打印素数。如果一个是质数,而另一个不是质数,它会

我的特定项目的目标是编写一个程序,提示用户输入两个整数。程序将读取这两个整数并决定它们是否为素数。如果不是,程序将列出因子,否则它将简单地打印“素数”,并反复要求用户输入两个整数。此外,程序应该打印两个给定整数之间的所有数字的因子以及整数本身。它还将给出素数的平均值

目标是使最终结果如下所示(假设两个整数分别为6和11):

请输入两个整数: 这是我的代码:
现在我不知道哪里出了问题,但我觉得我一定是朝着正确的方向前进了。如果两个输入都是素数,它将打印素数。如果一个是质数,而另一个不是质数,它会做我在上面发布的事情


非常感谢您的帮助。谢谢。

嗯,我只是简单地浏览一下,但您的问题在for循环中。从2开始计算i,这对于检查因子是合理的。然后同时检查num1和num2是否都能被
i
整除(此时为2)。如果是,则打印“素数”。然后迭代并再次执行。仔细想一想:它与你的想法/想法有多接近

如果非要我猜的话,您在后面缺少了一行
else

if (r1 == 0 && r2 == 0)
    System.out.println("Prime");
{
而且“if”的条件可能应该是否定的:
if(!(r1==0 | | r2==0))
。这至少应该足以让你走上正确的方向


祝你好运

嗯,我只是简单地浏览一下,但您的问题在for循环中。从2开始计算i,这对于检查因子是合理的。然后同时检查num1和num2是否都能被
i
整除(此时为2)。如果是,则打印“素数”。然后迭代并再次执行。仔细想一想:它与你的想法/想法有多接近

如果非要我猜的话,您在后面缺少了一行
else

if (r1 == 0 && r2 == 0)
    System.out.println("Prime");
{
而且“if”的条件可能应该是否定的:
if(!(r1==0 | | r2==0))
。这至少应该足以让你走上正确的方向


祝你好运

一种短得多的方法

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static List<Integer> primeFactors(int numbers) {
        int n = numbers; 
        List<Integer> factors = new ArrayList<Integer>();
        for (int i = 2; i <= n / i; i++) {
            while (n % i == 0) {
                factors.add(i);
                n /= i;
            }
        }
        if (n > 1) {
            factors.add(n);
        }
        return factors;
    }

    public static void main(String[] args) 
    {
        System.out.println("Please enter two integers : ");
        Scanner input = new Scanner(System.in);
        int num1 = input.nextInt();
        int num2 = input.nextInt();
        List<Integer> primenos = new ArrayList<Integer>();
        List<Integer> result;
        for(int i=num1; i<=num2; i++)
        {
            result = primeFactors(i);
            System.out.print(i +":");
            if(result.size()==1 && result.get(0)==i)
            {
                System.out.println(" prime");
                primenos.add(i);
            }
            else
            {
                for (Integer j : result) {
                    System.out.print(" "+j);
                }
            }
            System.out.println();
        }
        System.out.println("There are "+primenos.size()+" prime numbers");
        int total = 0;
        for(Integer j : primenos)
        {
            total+=j;
        }
        System.out.println("The average value of the prime numbers is "+total/primenos.size());
    }
}
import java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公共班机{
公共静态列表参数(整数){
int n=数字;
列表因子=新的ArrayList();
对于(int i=2;i 1){
因子。添加(n);
}
回报因素;
}
公共静态void main(字符串[]args)
{
System.out.println(“请输入两个整数:”);
扫描仪输入=新扫描仪(System.in);
int num1=input.nextInt();
int num2=input.nextInt();
List primenos=new ArrayList();
列出结果;

对于(inti=num1;i来说,这是一种短得多的方法

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static List<Integer> primeFactors(int numbers) {
        int n = numbers; 
        List<Integer> factors = new ArrayList<Integer>();
        for (int i = 2; i <= n / i; i++) {
            while (n % i == 0) {
                factors.add(i);
                n /= i;
            }
        }
        if (n > 1) {
            factors.add(n);
        }
        return factors;
    }

    public static void main(String[] args) 
    {
        System.out.println("Please enter two integers : ");
        Scanner input = new Scanner(System.in);
        int num1 = input.nextInt();
        int num2 = input.nextInt();
        List<Integer> primenos = new ArrayList<Integer>();
        List<Integer> result;
        for(int i=num1; i<=num2; i++)
        {
            result = primeFactors(i);
            System.out.print(i +":");
            if(result.size()==1 && result.get(0)==i)
            {
                System.out.println(" prime");
                primenos.add(i);
            }
            else
            {
                for (Integer j : result) {
                    System.out.print(" "+j);
                }
            }
            System.out.println();
        }
        System.out.println("There are "+primenos.size()+" prime numbers");
        int total = 0;
        for(Integer j : primenos)
        {
            total+=j;
        }
        System.out.println("The average value of the prime numbers is "+total/primenos.size());
    }
}
import java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公共班机{
公共静态列表参数(整数){
int n=数字;
列表因子=新的ArrayList();
对于(int i=2;i 1){
因子。添加(n);
}
回报因素;
}
公共静态void main(字符串[]args)
{
System.out.println(“请输入两个整数:”);
扫描仪输入=新扫描仪(System.in);
int num1=input.nextInt();
int num2=input.nextInt();
List primenos=new ArrayList();
列出结果;

对于(int i=num1;i请用[家庭作业]标记家庭作业).你对家庭作业的描述似乎不正确。似乎你应该输入两个整数a和b,然后打印出每个整数x,a是的。我的任务是输入两个整数,并打印两个整数因子以及它们之间的每个整数。如果它们是素数,它们将打印素数。为了清晰起见,你应该使用单独的方法来确定整数的因子或素数。只要阅读标题,答案就是打印
1
和数字本身。因为素数不能被任何其他数字整除…:-pp请用[homework]标记homeworks.你对家庭作业的描述似乎不正确。似乎你应该输入两个整数a和b,然后打印出每个整数x,a是的。我的任务是输入两个整数,并打印两个整数因子以及它们之间的每个整数。如果它们是素数,它们将打印素数。为了清晰起见,你应该使用单独的方法来确定整数的因子或素数。只需读取标题,答案就是打印
1
和数字本身。因为素数不能被任何其他数字整除…:-Pif我对该语句进行否定,它使它打印素数5次,无论数字是什么。我应该在else语句中添加什么?好吗我明白为什么我要否定这个条件,因为如果它可以被2整除,它就不能是素数。那么为什么现在它声称6是素数呢?如果我否定这个语句,它会使它打印素数5次,不管数字是什么。我应该在我的else语句中放什么?好的,我明白为什么我要否定这个条件,因为如果它可以被2整除它不可能是素数,那么为什么现在它声称6是素数呢?
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static List<Integer> primeFactors(int numbers) {
        int n = numbers; 
        List<Integer> factors = new ArrayList<Integer>();
        for (int i = 2; i <= n / i; i++) {
            while (n % i == 0) {
                factors.add(i);
                n /= i;
            }
        }
        if (n > 1) {
            factors.add(n);
        }
        return factors;
    }

    public static void main(String[] args) 
    {
        System.out.println("Please enter two integers : ");
        Scanner input = new Scanner(System.in);
        int num1 = input.nextInt();
        int num2 = input.nextInt();
        List<Integer> primenos = new ArrayList<Integer>();
        List<Integer> result;
        for(int i=num1; i<=num2; i++)
        {
            result = primeFactors(i);
            System.out.print(i +":");
            if(result.size()==1 && result.get(0)==i)
            {
                System.out.println(" prime");
                primenos.add(i);
            }
            else
            {
                for (Integer j : result) {
                    System.out.print(" "+j);
                }
            }
            System.out.println();
        }
        System.out.println("There are "+primenos.size()+" prime numbers");
        int total = 0;
        for(Integer j : primenos)
        {
            total+=j;
        }
        System.out.println("The average value of the prime numbers is "+total/primenos.size());
    }
}