OJ10152 分解质因数2

happykangya 2024-05-25 11:36:38

质数:是一个大于1的自然数,且除了1和它本身外,不能被其他自然数整除的数。最小的质数是2,1不是质数。
合数:一个正整数,如果除1和它本身以外,还能被其他正整数整除,叫合数。如6是合数,除了1和6以外,还能被2和3整除。
分解质因数:每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,把一个合数用质因数相乘的形式表示出来,叫做分解质因数(分解质因数只针对合数)。如合数12=2×2×3 。
分解质因数的方法是先用这个合数的最小质因数去除这个合数,结果若是一个质数就不再除下去;若是一个合数就继续按原来的方法从最小质因数除起,直至最后除得的结果是一个质数 。
例如:合数18分解质因数,首先用最小质因数2去除,除后结果为合数9,继续用最小质因数3去除,除后结果为质数3,就不再除下去。所以18的质因数为2、3、3,故质因数的个数为3;

 

输入描述:

给定一个合数n,将n分解质因数后,输出其质因数个数。(1≤n≤106)

 

输出描述:

将N分解质因数后,输出质因数个数。

 

AC程序如下:

#include<bits/stdc++.h>//万能头
using namespace std;
int main(){
    long long n,i,cnt=0;
    i=2;
    cin>>n;
    while(n>1){
        if(n%i==0){
            cnt++;
            n/=i;
        }
        else{
            i++;//如果不行,调整i的大小
        }
    }
    cout<<cnt;
    return 0;
}
 

注意:long long 数据类型也可以是 int 。

i必须是2,否则程序会超时。

在while循环里,n的条件不能改,否则程序也会超时。

...全文
216 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
happykangya 2024-05-25
  • 打赏
  • 举报
回复

求点赞!!!!

33,322

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧