为了账号安全,请及时绑定邮箱和手机立即绑定

主要问题java

主要问题java

森栏 2021-12-01 15:33:12
素数是一个大于 1 的正整数,它只能被它自己和 1 整除。在这个作业中,您将负责编写一个完整的 Java 程序来显示前 N 个素数。换句话说,你的程序应该列出前 N 个素数。功能要求您的程序应提示用户输入正数或值 -1 以终止程序。如果用户输入 0 或负数,程序也将立即结束。您的程序将显示用户给出的前 N 个素数。例如,如果用户输入 3,程序应该显示:“2, 3, 5”,它们是前三个质数。如果用户输入 6,输出将是:“2, 3, 5, 7, 11, 13”。样品运行Welcome to the list of N prime numbers program!===============================================Please enter the value of N (positive integer):6First 6 prime numbers are:23571113当我处理它时,我得到了这个,但需要帮助完成import java.util.Scanner;public class prime {    public static void main(String[] args) {        System.out.print("Welcome to the list of N prime numbers program! \n========================================================\nPlease enter the value of N (positive integer): ");        Scanner scan = new Scanner(System.in);        int n;        int status=1;        int num=3;        n = scan.nextInt();        if(n>=1) {            System.out.println(2);            for(int count=2; count<=n; count++) {                for(int j=2; j<=Math.sqrt(num);j++) {                    if(num%j==0) {                        status =0;                        break;                    }                    if(status!=0) {                        System.out.println(num);                        count++;                    }                }                status=1;                num++;            }        }    }}
查看完整描述

3 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

请使用以下方法获得素数。


static List<Integer> nthPrimeNo(int nth){

    List<Integer> integers = new ArrayList<>();


    int num, count, i;

    num=2;

    count=0;

    for (int j = 0; j < nth; j++) {

        while (count < j){

            num=num+1;

            for (i = 2; i <= num; i++){

                if (num % i == 0) {

                    break;

                }

            }

            if ( i == num){

                count = count+1;

            }

        }

        integers.add(num);

    }

    return integers;

}

或者你想得到比素数大 10 的数,


static List<Integer> sieveOfEratosthenes(int n) {

    boolean prime[] = new boolean[n + 1];

    Arrays.fill(prime, true);

    for (int p = 2; p * p <= n; p++) {

        if (prime[p]) {

            for (int i = p * 2; i <= n; i += p) {

                prime[i] = false;

            }

        }

    }

    List<Integer> primeNumbers = new LinkedList<>();

    for (int i = 2; i <= n; i++) {

        if (prime[i]) {

            primeNumbers.add(i);

        }

    }

    return primeNumbers;

}


查看完整回答
反对 回复 2021-12-01
?
白衣非少年

TA贡献1155条经验 获得超0个赞

public class prime {


public static boolean isPrime(int n) {

    for(int j=2; j<=Math.sqrt(n)+1;j++) { //Math.sqrt(n) + 1 because you want to check more than half of the original value.

        if(n%j==0) {

            return false;

        }

    }       

    return true;


}


public static void main(String[] args) {

    System.out.print("Welcome to the list of N prime numbers program! \n========================================================\nPlease enter the value of N (positive integer): ");

    Scanner scan = new Scanner(System.in);

    int inputNum; //try making the variable name meaningful

    inputNum = scan.nextInt();

    int count = 0;

    int startingVal = 2;


    while(count<inputNum) {

        if(inputNum==-1) {

            break;

        }

        if(count==0) {

            System.out.println(2);

            count++;

        }

        else if(isPrime(startingVal)) {

            System.out.println(startingVal);

            count++;

        }

        startingVal ++;


    }

}

}


这应该可以正常工作。正如评论部分中的@Amadan 已经提到的,您的程序无法运行,因为您的 if(status!=0) 处于 for 循环中。


此外,设置有意义的变量名称有助于您更轻松地修复或编辑代码。


查看完整回答
反对 回复 2021-12-01
?
千万里不及你

TA贡献1784条经验 获得超9个赞

你应该给出一个out.println("enter the number of prime numbers needed"); 然后使用扫描仪读取它(例如,如果它正在读入 x)并提供一个 if 条件作为


if(x<=0)

{

break;

}

和余额代码可以在else条件中给出。


查看完整回答
反对 回复 2021-12-01
  • 3 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信