求一个数的因子个数

首先对要求的数进行质因数分解,然后求各因数的幂的积数,比如600 = 2^3 * 3^1 * 5^2 那么因子个数是(3+1)*(1+1)*(2+1) = 24

public class TestYuman{

    public static void main(String[] args){

        int res=get_factor(6);
        System.out.println(res);
    }

    public static int get_factor(int input)
    {
        int factor=1,num=input;
        for(int i=2;i<input/2+1;i++)//注意i的范围
        {
            int counter=0;
            while(num%i==0)
            {
                num=num/i;
                counter++;
            }
            factor*=(counter+1);
            if(i>num)
                break;

        }
        return factor;
    }

}
时间: 2024-12-28 00:52:30

求一个数的因子个数的相关文章

Acdream1084 寒假安排 求n!中v因子个数

题目链接:点击打开链接 寒假安排 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 128000/64000 KB (Java/Others) SubmitStatistic Next Problem Problem Description 寒假又快要到了,不过对于lzx来说,头疼的事又来了,因为众多的后宫都指望着能和lzx约会呢,lzx得安排好计划才行. 假设lzx的后宫团有n个人,寒假共有m天,而每天只能跟一位后宫MM约会,并且由于后宫

一个数的因子个数求解公式

对于任何一个自然数$N$,都可以分解质因子得到如下形式:\[N=p_1^{e_1} * p_2^{e_2} * p_3^{e_3} * \cdots * p_k^{e_k}\] 那么,$N$的因子的个数为:$f(n) = (1 + e_1) * (1 + e_2) * \cdots * (1 + e_k)$. 如$N = 100$,分解质因子变形为:$100 = 2^2 * 5^2$,$N$的因子的个数为:$f(N) = f(100) = (1 + 2) * (1 + 2) = 9$. 即:$1

求因子个数和因子和

//求因子个数 int Facnt(int n) { int res = 1; for(int i=2;i*i<=n;i++) { if(n%i == 0) { int cnt = 0; do { n /= i; cnt++; }while(n%i==0); res *= (cnt+1); } } if(n > 1) res = 2*res; return res; } //求因子和 int Facsum(int n) { int res = 1; for(int i=2;i*i<=n;

Almost All Divisors(求因子个数及思维)

---恢复内容开始--- We guessed some integer number xx. You are given a list of almost all its divisors. Almost all means that there are all divisors except 11and xx in the list. Your task is to find the minimum possible integer xx that can be the guessed nu

AtCoder Beginner Contest 142【D题】【判断素数的模板+求一个数的因子的模板】

D - Disjoint Set of Common Divisors Problem Statement Given are positive integers AA and BB. Let us choose some number of positive common divisors of AA and BB. Here, any two of the chosen divisors must be coprime. At most, how many divisors can we c

Easy Number Challenge(暴力,求因子个数)

Easy Number Challenge Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Practice CodeForces 236B Appoint description:  System Crawler  (2016-04-26) Description Let's denote d(n) as the number of divisors of a

Divisors_组合数因子个数

Description Your task in this problem is to determine the number of divisors of Cnk. Just for fun -- or do you need any special reason for such a useful computation? Input The input consists of several instances. Each instance consists of a single li

HDOJ(HDU) 2521 反素数(因子个数~)

Problem Description 反素数就是满足对于任意i(0< i < x),都有g(i) < g(x),(g(x)是x的因子个数),则x为一个反素数.现在给你一个整数区间[a,b],请你求出该区间的x使g(x)最大. Input 第一行输入n,接下来n行测试数据 输入包括a,b, 1<=a<=b<=5000,表示闭区间[a,b]. Output 输出为一个整数,为该区间因子最多的数.如果满足条件有多个,则输出其中最小的数. Sample Input 3 2 3

POJ 2992 求组合数的因子个数

求C(n,k)的因子个数 C(n,k) = (n*(n-1)*...*(n-k+1))/(1*2*...*k) = p1^k1 * p2^k2 * ... * pt^kt 这里只要计算出分子中素数因子个数减去分母中的个数 然后每一种因子都有 (cnt+1)种取的可能,乘一下就出来了 但是不能逐个因子分解,试了两次都错了,后来初始的时候,先将这432个数提前预处理分解好保存到vector中 然后用的时候直接提取就行 不然会因为数据量太大超时的 1 #include <iostream> 2 #i