利用欧拉筛法更快捷的找出素数
public class Main {
static int n = 1000000;
static boolean[] num = new boolean[n];
static int[] prime = new int[n];
public static void main(String[] args) {
for(int i = 2,j = 0; i < n; i++) {
if (!num[i]) {
prime[j++] = i;
}
for(int k = 0; k < j; k++) {
if (i * prime[k] >= n) {
break;
}
num[prime[k]*i] = true;
if (i % prime[k] == 0 && !num[i]) {
// 如果是合数,碰到他的最小的素因子的时候就要结束本轮循环
break;
}
}
}
// num里面,所有合数都为true,素数都是false
// prime 里面,都是素数
int count = 0;
for (int i : prime) {
if (check(i)) {
count++;
}
}
System.out.println(count);
}
private static boolean check(int n) {
int sum = 0;
while(n > 0) {
sum += n % 10;
n /= 10;
}
if (sum == 23) {
return true;
}
return false;
}
}