题目描述:
输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1.
输入:
输入有多组数据。
每组一行,输入n。
输出:
输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1.
样例输入:
100
样例输出:
11 31 41 61 71
示例代码:
import java.util.Scanner;
public class Main {
public static int[] primeNmb(int range){
int[] prime = new int[range];
boolean[] marker = new boolean[range];//boolean初始化为false
int cnt = 0;
for (int i=2;i<range;i++){
if (marker[i]){continue;} //marker[i]为true表示i不是素数
else {
prime[cnt++] = i;
for (int j=i*i;j<range;j+=i){
marker[j]=true;
}
}
}
return prime;
}
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
int range = scanner.nextInt();
int[] prime = primeNmb(range);
if (prime.length==0){System.out.println("-1");}//若此范围内没有素数,则输出-1
else {
int number = prime.length;
int cnt=0;
for (int i=0;i<number;i++){
if ((prime[i]-1)%10==0){System.out.print(prime[i]+" ");cnt++;}
}
if (cnt==0){System.out.print("-1");}//若没有满足个位为1条件的素数,则输出-1
}
System.out.println();//输出结果后换行
}
}
}