蓝桥杯——质数(JAVA)

本题主要是用于寻找第n个质数,主要的思路也是创建一个函数用于判断当前循环的数字是否是质数。问题描述如下

蓝桥杯——质数(JAVA)_第1张图片

 没有其他花哨的东西,简单直白的求第2019个质数就可以了。

解答过程如下:

package suanfa;
import java.util.*;
public class PrimeNumber {
	public static boolean isPrime(int n)//先写一个判断是否是质数的条件(这个数只能被一和它本身整除)
	{
		for(int i=2;i<=n-1;i++)//把这个数从2到这个数减1的所有数字写入
		{
			if(n%i==0)//如果这个数字可以被除了1和它本身的数字整除
				return false;//那么这个数在经过判断后就不是一个质数
		}
		return true;//要是这个数字不可以被它本身和一之外的数字整除,那么这个数字就是一个质数
	}
	public static void main(String[]args)
	{
		Scanner sc=new Scanner(System.in);//调用Scanner来从键盘输入一个n值
		int n=sc.nextInt();
		int count=0;//初始化质数的序号
		for(int i=2;i<1000000;i++)//建立循环找到在给定区间内的所有质数
		{
			if(isPrime(i)) count++;//如果是一个质数,那么质数的序号就要加一,表示这是第n个质数
			if(count==n)//当质数的序号到达我们所给定的值的时候
			{
				System.out.println(i);//将这个质数输出
				break;//结束循环
			}
		}
	}

}

本人对于蓝桥杯做题的习惯是手动输入自己想要的数,例如本题中需要的是第2019个质数,所以本程序中运行后需要手动输入2019;然后会返回答案

当然,求质数的方法还可以将上面的

for(int i=2;i<=n-1;i++)

变成

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

两种方法的区别就在于当我们需要的第n个数中的n很大时,使用开方的方法可以大幅缩减所需要的时间。

有更好的方法欢迎私信作者或是品论区补充。 

 

 

 

你可能感兴趣的:(蓝桥杯,java,职场和发展)