zoukankan      html  css  js  c++  java
  • 约数的个数

    约数的个数

    Description

    mmoaay小侄子今年上初中,老师出了一道求约数个数的题目,比如8的约数有1,2,4,8共4个。

    当数比较小的时候可以人工算,当n较大时就难了。

    mmoaay嫌麻烦,现在让你编个程序来算。

    Input

    一行一个整数。最后以0结束。

    Output

    分别求出这些整数的约数个数,最后的0不用处理。

    Sample Input

    8
    100
    0

    Sample Output

    4
    9


    题解:求正整数378000共有多少个正约数?
    解:将378000分解质因数378000=2^4×3^3×5^3×7^1
    由约数个数定理可知378000共有正约数(4+1)×(3+1)×(3+1)×(1+1)=160个。
    #include <stdio.h>
    #include <math.h>
    #define N 70000
    #define LL long long
    bool prime[N];
    int a[N];
    void Prim()
    {
        int i, j;
        for(i = 2; i < N; i++)
        {
            if(i % 2)
                prime[i] = false;
            else
                prime[i] = true;
        }
        for(i = 3; i <= sqrt(N); i += 2)
            if(prime[i])
                for(j = i + i; j < N; j += i)
                    prime[j] = false;
        j = 1;
        a[0]=2;
        for(i = 2; i < N; i++)
            if(!prime[i])
                a[j++] = i;
    }
    int main()
    {
        LL t;
        Prim();
        while(scanf("%lld",&t),t)
        {
            LL s=1,i;
            for(i=0;;i++)
            {
                if(t==1)
                    break;
                LL num=1;
                while(t%a[i]==0)
                {
                    num++;
                    t/=a[i];
                }
                s*=num;
            }
            printf("%lld
    ",s);
        }
        return 0;
    }
    
    
  • 相关阅读:
    day39
    day36
    day35
    day34
    深入理解css的margin
    git使用
    java常见的分页实现方式
    jquery常识
    与border不得不说的故事
    测试效果
  • 原文地址:https://www.cnblogs.com/yu0111/p/4792812.html
Copyright © 2011-2022 走看看