zoukankan      html  css  js  c++  java
  • 九度OJ 1207:质因数的个数 (质数)

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:5939

    解决:1926

    题目描述:
    求正整数N(N>1)的质因数的个数。
    相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。
    输入:

    可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。

    输出:

    对于每组数据,输出N的质因数的个数。

    样例输入:
    120
    样例输出:
    5
    提示:

    注意:1不是N的质因数;若N为质数,N是N的质因数。

    来源:
    2007年清华大学计算机研究生机试真题

    思路:

    常规思路是先求出不大于sqrt(n)的质数,然后判断是否是n的因子。

    我的代码在无意中运用了素数筛法,更加简洁,推荐!


    代码:

    #include <stdio.h>
    #include <string.h>
    #include <math.h>
     
    int main(void)
    {
        int n, i, j;
        int tmp, count;
     
        while (scanf("%d", &n) != EOF)
        {
            count = 0;
            i = 2;
            while (n>1)
            {
                for (; i<=sqrt(n); i++)
                {
                    if (i>2 && i%2 == 0)
                        continue;
     
                    if (n % i == 0)
                    {
                        count ++;
                        n /= i;
                        break;
                    }
                }
                if (i > sqrt(n))
                {
                    count ++;
                    break;
                }
            }
     
            printf("%d
    ", count);
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1207
        User: liangrx06
        Language: C
        Result: Accepted
        Time:10 ms
        Memory:928 kb
    ****************************************************************/


    编程算法爱好者。
  • 相关阅读:
    [Leetcode]142. Linked List Cycle II
    c程序设计语言笔记001
    把输入一次一个字符复制到输出
    linux笔记
    转 算法之二叉树各种遍历
    将输入复制到输出
    java.lang.OutOfMemoryError处理错误
    字号对照表
    颜色十六进制对照表一
    CSS样式(转)
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5083820.html
Copyright © 2011-2022 走看看