博客
关于我
java 牛客:因子个数
阅读量:749 次
发布时间:2019-03-22

本文共 2746 字,大约阅读时间需要 9 分钟。

To solve this problem, we need to determine the number of factors for each given positive integer. The solution involves understanding the prime factorization of a number and using it to compute the total number of factors.

Approach

The approach can be broken down into the following steps:

  • Prime Factorization: Decompose the given number into its prime factors. For example, the number 36 can be decomposed into (2^2 \times 3^2).

  • Exponent Tracking: For each prime factor, determine its exponent in the factorization. For instance, in the case of 36, the exponent of 2 is 2, and the exponent of 3 is also 2.

  • Calculate Factors: The total number of factors of a number can be found by taking the product of each prime factor's exponent incremented by one. For example, using the prime factors of 36, the total number of factors is ((2+1) \times (2+1) = 9).

  • Efficient Looping: Use efficient looping techniques to iterate through potential factors, and stop early when further division isn't possible. This optimization prevents unnecessary computations.

  • Solution Code

    import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        while (scanner.hasNextInt()) {            int n = scanner.nextInt();            System.out.println(countFactors(n));        }    }    private static int countFactors(int n) {        if (n <= 1) {            return 1;        }        int factors = 1;        for (int i = 2; i * i <= n; ) {            if (n % i == 0) {                int exponent = 0;                while (n % i == 0) {                    exponent++;                    n /= i;                }                factors *= (exponent + 1);            } else {                i++;            }        }        if (n > 1) {            factors *= 2;        }        return factors;    }}

    Explanation

  • Reading Input: The code reads each integer from the standard input.
  • Handling Special Cases: If the input number is 1, it directly returns 1 as it is the only factor.
  • Prime Factorization Loop: The loop iterates from 2 up to the square root of the number. For each potential factor, it checks if it divides the number. If it does, it counts how many times it divides (the exponent) and then divides the number by this factor until it no longer can.
  • Updating Factors Count: The number of factors is updated by multiplying the product of each exponent incremented by one.
  • Remaining Prime Check: If after processing all factors up to the square root, the remaining number is greater than 1, it means it is a prime factor itself, contributing one more factor.
  • This approach efficiently computes the number of factors for each positive integer, ensuring correct and optimal results.

    转载地址:http://nvewk.baihongyu.com/

    你可能感兴趣的文章
    org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded
    查看>>
    org.tinygroup.serviceprocessor-服务处理器
    查看>>
    org/eclipse/jetty/server/Connector : Unsupported major.minor version 52.0
    查看>>
    org/hibernate/validator/internal/engine
    查看>>
    Orleans框架------基于Actor模型生成分布式Id
    查看>>
    SQL-36 创建一个actor_name表,将actor表中的所有first_name以及last_name导入改表。
    查看>>
    ORM sqlachemy学习
    查看>>
    Ormlite数据库
    查看>>
    orm总结
    查看>>
    os.environ 没有设置环境变量
    查看>>
    os.path.join、dirname、splitext、split、makedirs、getcwd、listdir、sep等的用法
    查看>>
    os.removexattr 的 Python 文档——‘*‘(星号)参数是什么意思?
    查看>>
    os.system 在 Python 中不起作用
    查看>>
    OS2ATC2017:阿里研究员林昊畅谈操作系统创新与挑战
    查看>>
    OSCACHE介绍
    查看>>
    SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum
    查看>>
    OSChina 周五乱弹 ——吹牛扯淡的耽误你们学习进步了
    查看>>
    SQL--mysql索引
    查看>>
    OSChina 周四乱弹 ——程序员为啥要买苹果手机啊?
    查看>>
    OSChina 周日乱弹 —— 2014 年各种奇葩评论集合
    查看>>