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

计算并打印第n个素数

计算并打印第n个素数

倚天杖 2019-08-31 11:01:26
我正在尝试计算素数,我已经完成了。但我想计算并打印第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然后它打印出那个数字,但是我无法弄清楚如何降落它。
查看完整描述

3 回答

?
富国沪深

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

int counter = 0;


for(int i = 1; ; i++) {

    if(isPrime(i)

        counter++;


    if(counter == userInput) {

        print(i);

        break;

    }

}

编辑:你的主要功能可以使用一些工作。这是我写的一篇:


private static boolean isPrime(long n) {

    if(n < 2)

        return false;


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

        if (n % i == 0)

            return false;

    }

    return true;

}

注意 - 在查看因子时,您只需要达到sqrt(n),因此 i * i <= n


查看完整回答
反对 回复 2019-08-31
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

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


查看完整回答
反对 回复 2019-08-31
  • 3 回答
  • 0 关注
  • 690 浏览

添加回答

举报

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