zoukankan      html  css  js  c++  java
  • 【九度OJ】题目1207:质因数的个数

    原题:

    题目描述: 
    求正整数N(N>1)的质因数的个数。
    相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。
    输入: 
    可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。
    
    输出: 
    对于每组数据,输出N的质因数的个数。
    
    样例输入: 
    120样例输出: 
    5提示: 
    注意:1不是N的质因数;若N为质数,N是N的质因数。

    解题代码:

    C语言代码

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int n;
        while((scanf("%d",&n))!=EOF)
        {
            printf("%d\n",fun(n));
        }
        return 0;
    }
    
    int fun(int n)
    {
        int s = 0, m = n, i = 2, j = (int)sqrt(n);
        while(i<=j)//j为n的平方根,缩减范围
        {
            if(m%i == 0)
            {
                m = m/i;//注意i一定会是质因数
                s++;//质因数增加1
                if(m==1)    break;//恰好整除完了
                continue;//否则继续用i去整除n
            }
            i++;
        }
        if(m>1 && m<n)
        {
            s++;//还有一个大于平方根的质因数
        }
        if(m == n)
        {
            s = 1;
        }
        return s;
    }
  • 相关阅读:
    I
    H
    装箱问题
    E
    Oracle创建视图(View)
    (转)Navicat Premium 12.1.8.0安装与激活
    bigdecimal 保留小数位
    用命令修改Oracle数据库密码
    sql中exists,not exists的用法
    在Orcl中通过SQL语句修改创建表
  • 原文地址:https://www.cnblogs.com/yinger/p/2644400.html
Copyright © 2011-2022 走看看