(牛客第一场)E.rin和快速迭代
设为
的因子个数,将
迭代下去,任意正整数都会变成2。
对于一个比较大的数而言,它的因子数,通常远远小于这个数本身,所以暴力求解时间复杂度也不高,迭代几次往往就能求出答案。
#include <iostream>
#include <cmath>
using namespace std;
// 正整数n的因子个数
long long num(long long n){
long long count=2; //大于1的每个数都有两个因子
for(long long i=2;i<=sqrt(n);i++){
if(n%i==0){
if(i==sqrt(n) && n/i==i){ //因子为元素开平方时,+1
count++;
}
else count+=2; //否则加2
}
}
return count;
}
int main(){
long long n;
cin>>n;
long long cnt=1;
n=num(n);
while(n!=2){ //不断循环迭代,直到n等于2
cnt++; //计数
n=num(n);
}
cout<<cnt<<endl;
return 0;
} 
京公网安备 11010502036488号