源码如下:
public static void main(String[] args) {
//质数:prime,质数又称素数,是指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数
System.out.println("请输入一个整数:(计算机将显示不超过该整数的质数)");
Scanner scanner = new Scanner(System.in);
int max = scanner.nextInt();
int sum=0;
StringBuilder sb = new StringBuilder();
for (int j = 1; j <= max; j++) {
if(isPrime(j)){
//System.out.print(j+";"); //输出质数
sb.append(j+";");
sum++; //计数
}
}
System.out.println("小于或等于"+max+"的质素总有:"+sum+"个;");
String s = sb.toString();
String[] ss = s.split(";");
//System.out.println(ss.length);
for (int i = 0; i < ss.length; i++) {
if((i+1)%20==0){
System.out.print(ss[i]+"\n\r");
}else{
System.out.print(ss[i]+"\t");
}
}
System.out.println();
System.out.println("你要显示第几个质数?");
Scanner scanner1=new Scanner(System.in);
int a = scanner1.nextInt();
if(a>sum){
System.out.println("你输入的数值太大!");
}else{
System.out.println(ss[a-1]);
}
}
public static boolean isPrime(long x){
// 排除小于等于1的数
if(x<=1){
return false;
}
//是2
if (x == 2) {
return true;
}
//排除被2整除的数
if(x%2==0){
return false;
}
//不能被2整除的数,所以i=i+2;
//如果数c不是质数,是合数,则除了1和自身,一定还有其他因子,假设因子为a,b.其中必有一个大于sqrt(c) ,一个小于sqrt(c) 。
//因此,合数必有一个小于或等于其平方根的因数。
//如果一个数没有一个小于或等于其平方根的因数,则其必定是质数。
for(int i=3;i<=Math.sqrt(x);i=i+2){
if(x%i==0){
return false;
}
}
return true;
}
}