猿问

计算并打印第n个素数

我正在尝试计算素数,我已经完成了。但我想计算并打印第n个素数(用户输入),在计算其余部分(它们不会被打印)时,只打印第n个素数。


这是我到目前为止所写的内容:


import java.util.Scanner;

/**

 * Calculates the nth prime number

 * @author {Zyst}

 */

public class Prime {

    public static void main(String[] args) {


        Scanner input = new Scanner(System.in);

        int n, 

            i = 2, 

            x = 2;


        System.out.printf("This program calculates the nth Prime number\n");

        System.out.printf("Please enter the nth prime number you want to find: ");

        n = input.nextInt();


        for(i = 2, x = 2; i <= n; i++) {

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

                if(i % x == 0) {

                    break;

                }

            }

            if(x == i) {

                System.out.printf("\n%d is prime", x);

            }

        }

    }

}

这是我编写的计算从1到n的素数的程序。但是,我希望它只打印第n个素数,


我想到的是在每次找到素数时都会对它进行某种计算和计算,当计数== n然后它打印出那个数字,但是我无法弄清楚如何降落它。


倚天杖
浏览 691回答 3
3回答

富国沪深

int counter = 0;for(int i = 1; ; i++) {&nbsp; &nbsp; if(isPrime(i)&nbsp; &nbsp; &nbsp; &nbsp; counter++;&nbsp; &nbsp; if(counter == userInput) {&nbsp; &nbsp; &nbsp; &nbsp; print(i);&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; }}编辑:你的主要功能可以使用一些工作。这是我写的一篇:private static boolean isPrime(long n) {&nbsp; &nbsp; if(n < 2)&nbsp; &nbsp; &nbsp; &nbsp; return false;&nbsp; &nbsp; for (long i = 2; i * i <= n; i++) {&nbsp; &nbsp; &nbsp; &nbsp; if (n % i == 0)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return false;&nbsp; &nbsp; }&nbsp; &nbsp; return true;}注意 - 在查看因子时,您只需要达到sqrt(n),因此 i * i <= n

ABOUTYOU

你试图在main方法中做太多。您需要将其分解为更易于管理的部分。编写一个方法boolean isPrime(int n),如果数字是素数则返回true,否则返回false。然后修改main方法以使用isPrime。
随时随地看视频慕课网APP

相关分类

Java
我要回答