E.rin和快速迭代(约数,模拟)

rin和快速迭代

http://www.nowcoder.com/questionTerminal/a797241b43f34ed4a9ef6018747c30b1

(牛客第一场)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;
}
全部评论

相关推荐

牛可乐121381:卖课的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务