奇♂妙拆分

奇♂妙拆分

https://ac.nowcoder.com/acm/problem/14709

题意:一个自然数最多可以分解成多少个不同的因子。


思路:


枚举题,主要在暴力的基础上减去不必要的枚举。
1.因为n(1除外)一定存在一个小于的因子,所以枚举到因子枚举到就可以了。
2.每找到一个因子就从n分离出来:
3.当时,有两个一样的未出现的因子,那么只能把这两个因子合并为算作一个因子。
4.当时,(假设x是上一个分解的因子)表示没有比x还大的因子对了,就是比如,需要a和b都大于x,不然分解出b后分解a时一定会重,因为a小于分解出来的一些因子,说明a的因子包括a,前面已经出现过了。
5.所以如果,把他算作一个因子,不能再分解了。


Code:


#include<bits/stdc++.h>
#define  js  ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
using namespace std;
int main() {
    js; int t,n;
    cin>>t;
    while(t--) {
        int ans=0; cin>>n;
        for(int i=1;i*i<n;++i) {
            if(n%i==0) {
                ++ans;
                n/=i;
            }
        }
        cout<<ans+1<<endl;
    }
}

为雨巨打call

全部评论

相关推荐

程序员小白条:你不是有一段实习了吗,现在找中大厂实习?过段时间要秋招了
我的简历长这样
点赞 评论 收藏
分享
牛客刘北:如果暑期实习是27届的话,你要晚一年才会毕业,企业为什么会等你呢?要搞清时间逻辑呀!27届现在实习只能是在暑假实习,这是日常实习,不是暑期实习。所以多去投日常实习吧,暑期实习肯定不会要你的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
05-28 12:15
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 17:30
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务