• HJ6 质数因子


    一、题目

    1. 描述
    2. 功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5
    3. 数据范围: 1 \le n \le 2 \times 10^{9} + 14 \1≤n≤2×10
    4. 9
    5. +14
    6. 输入描述:
    7. 输入一个整数
    8. 输出描述:
    9. 按照从小到大的顺序输出它的所有质数的因子,以空格隔开。
    10. 示例1
    11. 输入:
    12. 180
    13. 复制
    14. 输出:
    15. 2 2 3 3 5

    二、C语言解法

    1. #include
    2. int main()
    3. {
    4. long int n;
    5. scanf("%ld",&n);
    6. for(int i=2;i*i<=n;i++)
    7. while(n%i==0)
    8. {
    9. printf("%d ",i);
    10. n = n/i;
    11. }
    12. if(n!=1)
    13. printf("%ld ", n);
    14. return 0;
    15. }

    知识点:

            ①此题主要需要注意时间复杂度,判断因子的时候只需要判断到i*i

            ②解法中没有对因数判断是否为质数的环节,因为除数是从小到大进行遍历,这样输入值非质数的因子会先被拆分为质数因子,而不会输出该非质数因子。

            ③不要忽略被除数本身有可能就是一个质数,如果除数遍历了以后,没有一个是它的因子,则该数即为质数。

    三、python解法

    1. import sys
    2. a = int(input())
    3. for i in range(2, int(a**0.5)+1):
    4. while a%i==0:
    5. print(i, end=' ')
    6. a = a//i
    7. if(a!=1):
    8. print(a)

    知识点:

            ①在python中双星号(**)是指数运算符,用于进行乘方运算或幂运算。双星号用于两个数之间,表示将第一个数作为底数,第二个数作为指数进行乘方运算或幂运算。

            ②python在进行除法运算的时候会自动将数转换为双精度浮点型来计算,以防止结果精度的丢失,即使可以整除,也会先进行转换再运算,结果返回一个float,如果需要结果返回一个整型,可以使用‘//’,返回一个int,但需要除数与被除数均为int型,否则结果也会是float。示例如下:

    1. print(4/2) #输出为2.0
    2. print(7//4) #输出为1

  • 相关阅读:
    进程调度的基本过程
    游戏数据入库
    Linux环境下MySQL的数据目录
    解决MySQL插入不了中文数据问题
    RabbitMQ 消息中间件
    Docker Tutorial
    [附源码]SSM计算机毕业设计志愿者管理系统论文2022JAVA
    【6篇文章串讲ScalableGNN】围绕WWW 2022 best paper《PaSca》
    软件测试怎么学?App自动化、Web自动化、性能测试怎么学?一文总结
    ED8000 地下电子标签探测器|标识器探测仪深度测量校准操作说明
  • 原文地址:https://blog.csdn.net/qq_41872042/article/details/133782812