题目:给定一个正整数N,你需要统计(1,N]之间所有整数质数分解后,所有质数的总个数。
eg:输入6
得出7
2=2 3=3 4=22 5=5 6=23 所以1+1+2+1+2=7
思路:从2开始,遍历到N
求整数质数,除数先取二,直到除不尽的时候除数加1,每次让N等于除的结果,当N的值为1,表示分解完。同时设置计数器记录分解次数,每分解一次加1
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Solution {
public static void main(String[] args) throws IOException{
Solution s=new Solution();
BufferedReader bu=new BufferedReader(new InputStreamReader(System.in));
String num=bu.readLine();
int i=Integer.parseInt(num);
System.out.println(s.Count_PrimeNum(i));
}
public int Count_PrimeNum(int N) {
int count=0;
int devisor=2;
int temp;
for(int i=2;i<=N;i++){
temp=i;
do {
if(temp%devisor==0){
temp/=devisor;
count++;
}else{
devisor++;
}
}while(temp!=1);
//除数重置为2
devisor=2;
}
return count;
}
}