质数筛选定理:n不能够被不大于根号n的任何质数整除,则n是一个质数
所以循环从2(最小的质因数)开始直到根号n,判断是否为n的因数即可,最后+1为最后一个因数。同时因为从小到大的缘故,所有因数都为质数。
#include using namespace std; int cal_factor(int n){ int num=0; for(int i=2;i*i<=n;i++){ if(n%i==0){ num++;n=n/i;i--; } } num++; return num; } int main(){ int n; while(cin>>n){ cout<<cal_factor(n)<<endl; } }

京公网安备 11010502036488号