1. 给定一个数 num,求[0, num]内的质数
思路
- 如果一个数是非质数,那么它的n被也一定是非质数
public static void main(String[] args) {
int max = 300;
boolean[] prime = new boolean[max];
prime[0] = true; // 0是非质数
prime[1] = true; // 1是非质数
int num = 2, i;
while (num < max) {
if (!prime[num]) {
for (i = num + num; i < max; i+=num) {
if (prime[i]) {
continue;
}
prime[i] = true; // 设置为true,代表为非质数
}
}
num++;
}
System.out.println("1 到" + max + "间的所有质数:");
for (i = 2, num = 0; i < max; i++) {
if (!prime[i]) {
System.out.print(i + "\t");
num++;
}
}
System.out.println("质数总和:" + num);
}
网友评论