输入有多组数据。 每组一行,输入n。
输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。
100
11 31 41 61 71
int max = new Scanner(System.in).nextInt(); int sum = 0; flag: for (int i = 1; i < max; i += 10) { if (i == 1) { continue; } for (int j = 2; j <= Math.sqrt(i); j++) { if (i % j == 0) { continue flag; } } sum++; System.out.print(i + " "); } if (sum == 0) { System.out.println(-1); } }
import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); ArrayList<Integer> list = new ArrayList<>(); for (int i = 2; i < n; i++) { boolean flag = true; for (int j = 2; j * j <= i; j++) { if (i % j == 0) { flag = false; break; } } if (flag && String.valueOf(i).endsWith("1")) list.add(i); } if (list.isEmpty()) System.out.println(-1); else for (Integer i : list) System.out.print(i + " "); } }
运行时间:42ms
占用内存:10964k
假设本次循环判断的数是i
如何判断i是不是素数,并且个位数是1。
默许i已经是素数了(对,少放屁!判断是不是素数大家都会),判断i个位数是1,鄙人给出了两种方法:
①if (i % 10 == 1) {}
②if (String.valueOf(i).endsWith("1")) {}
都AC的code:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while (scan.hasNext()) {
int n = scan.nextInt();
//新建ArrayList保存结果
List<Integer> list = new ArrayList<>();
// 找到2到n之间的个位是1的素数 并往ArrayList中逐个添加
for (int i = 2; i < n; i++) {
if (judgePrimeNumber(i)) {
// if (i % 10 == 1) {//这里的判断条件可以有其他形式
if (String.valueOf(i).endsWith("1")) {
list.add(i);
}
}
}
// 因为输出的最后一个整数后面不能有空格
// 我采用了将数据保存到ArrayList中最后方便输出这种做法
// 当然做法还有其他
for (int i = 0; i < list.size() - 1; i++) {
System.out.print(list.get(i) + " ");
}
System.out.println(list.get(list.size() - 1));
}
}
/**
* 判断该次循环的数是否是素数 基本功了
**/
private static boolean judgePrimeNumber(int n) {
// TODO Auto-generated method stub
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
}
import java.util.*;
public class Main{
public static boolean Out(int a){
for(int i=2;i<a;i++ ){
if(a%i==0){
return false;
}
}
return true;
}
public static void main(String[] args){
Scanner in =new Scanner(System.in);
while(in.hasNext()){
int n=in.nextInt();
String s="";
for(int i=11;i<n;i+=10){
if(Out(i)){
s+=i+" ";
}
}
System.out.println(s.trim());
}
}
}