题目描述
实现一个算法求质数数目。介绍如下:
- 质数是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。
- 给定数字 nn,对于从 0 至 nn 的数字,需要判断这个数字是不是质数。然后输出质数总数。
输入描述
输入一个数字 n (1≤N≤105)n (1≤N≤105),含义见题干。
输出描述
输出一行,为 0 至 nn 之间质数的个数。
输入输出样例
示例
输入
5
输出
3
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
题解:
java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int sum = 0;
for (int i = 2; i <= n; i++) {
boolean isPrime = true;
for (int j = 2; j < i; j++) {
if (i % j == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
sum += 1;
}
}
System.out.print(sum);
scan.close();
}
}
解题要点:
从 2 遍历到 n,逐个数字判断是不是质数
缺点:
双重循环会比较慢,不适合大数据。