题目要求
分析
这题也不是很容易理解的一个题呐……
我们可以开个数组,存质数个数。
数组元素先按照默认的全为0,以便输出时判断。
然后 1, 2, 3, …, n 分别求质因子。
这方法特别强的是:不用判断是不是质数。
理由:因为每个质因子我们都一直除,直到不能再除,以后也不会出现可以除的数是此数的倍数了,相当于已经筛掉了。
AC代码(Java语言描述)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
int[] array = new int[num+1];
for (int i = 2; i <= num; i++) {
int temp = i;
for (int j = 2; j <= i; j++) {
while (temp % j == 0) {
array[j]++;
temp /= j;
}
}
}
for (int i = 1; i <= num;i++) {
if (array[i]!=0) {
System.out.println(i + " " + array[i]);
}
}
scanner.close();
}
}