题目以及要求:
代码:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class 素数个数 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long num=sc.nextLong();
int p=1;
if (num>5) {
p=2;
}
List<Integer> list=new ArrayList<Integer>();
for (int i = 3; i <=num; i+=((i+2)%5==0)?4:2) {
int m=0;
for (int j =0; j <list.size(); j++) {
if (i%list.get(j)==0) {
m=1;
break;
}
}
if (m==0) {
p++;
if(i<10000){
list.add(i);}
}
}
System.out.println(p);
}
}
虽然进行了部分的优化,但是当数据很大时输出的时间会超过两秒,所以还是需要进一步的优化。