在java中列出用户输入的素数

在java中列出用户输入的素数,java,Java,在java中,我要做的是让用户输入一个大于0的值,然后用这个数字输入从2开始的素数列表 因此,如果用户输入“3”,程序将显示2,3,5 如果用户输入“5”,程序将显示2,3,5,7,11 等等 问题是我不知道如何让用户输入正确地执行此操作,我要么以重复多次的数字结束,要么列表以用户输入结束,任何帮助都将受到感谢 import java.util.Scanner; public class Primes { public static void main(String[] args)

在java中,我要做的是让用户输入一个大于0的值,然后用这个数字输入从2开始的素数列表

因此,如果用户输入“3”,程序将显示2,3,5 如果用户输入“5”,程序将显示2,3,5,7,11 等等

问题是我不知道如何让用户输入正确地执行此操作,我要么以重复多次的数字结束,要么列表以用户输入结束,任何帮助都将受到感谢

import java.util.Scanner;

public class Primes 
{

    public static void main(String[] args)
    {
        Scanner console = new Scanner(System.in);


        int n = console.nextInt();

        if(n<=0)
        {
            return;
        }
        else
        {
            for(int i=2; i < 100; i++)
            {
                boolean isPrime = true;

                for(int j=2; j < i; j++)
                {
                    if(i%j == 0)
                    {
                        isPrime = false;
                        break;
                    }
                }
                if(isPrime)
                {
                    System.out.println(i);
                }
            }
        }

    }

}
import java.util.Scanner;
公共类素数
{
公共静态void main(字符串[]args)
{
扫描仪控制台=新扫描仪(System.in);
int n=console.nextInt();

如果(nfor
循环在找到足够的素数时停止,并在找到素数时执行
primesFound++
来计算找到的素数:


对于(int i=2,primesFound=0;primesFound

我宁愿使用经过重构的代码,每个方法都做一件事,它使阅读、调试和维护变得更加容易

我们需要做的就是将检查一个数字是否为素数的逻辑与检查这些数字的逻辑分开,直到找到
n
素数:

public static void main(String[] args) {
    printNPrimes(5);
}

static private boolean isPrime(int n) {
    for (int i = 2; i <= Math.sqrt(n); i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

static private void printNPrimes(int n) {
    int i = 2;
    while (n > 0) {
        if (isPrime(i)) {
            System.out.println(i + " is Prime");
            n--;
        }
        i++;
    }
}
publicstaticvoidmain(字符串[]args){
打印时间(5);
}
静态私有布尔iPrime(int n){
对于(int i=2;i 0){
如果(i){
System.out.println(i+“是素数”);
n--;
}
i++;
}
}
//prime
int i,j;
Set primeNums=new HashSet();
Set notPrimeNums=new HashSet();
堆栈=新堆栈();

for(i=1;i“for(inti=2;i<100;i++)”你为什么选择100?不知道只是一个很大的数字,看看它是否有效相关的问题。当你从用户那里得到输入时,你怎么处理它?这个问题应该移到:,并在那里以重复的形式结束:@alfasin,因为它不是重复的。问题不是如何快速找出素性,而是如何停止p一旦找到精确数量的素数。@PianoMeow,因为此代码不必要地复杂且难以理解。您可以使其简单化重构:)小更正:
i
//prime 

int i,j;

Set<Integer> primeNums = new HashSet<>();
Set<Integer> notPrimeNums = new HashSet<>();
Stack<Integer> stack = new Stack<>();

for(i=1; i<fiboList.size(); i++) {
    for(j=i+1; j<fiboList.size(); j++) {
        if( i % j == 0 ) {
            notPrimeNums.add(fiboList.get(i));
        }else {
            primeNums.add(fiboList.get(i));
        }
    }
}

stack.addAll(primeNums);
Collections.sort(stack);
System.out.println("Prime numbers:"+" "+stack);

}