• 【华为机试题分析】 6 质数因子


    描述

    功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )

    输入描述:

    输入一个整数

    输出描述:

    按照从小到大的顺序输出它的所有质数的因子,以空格隔开。

    示例1

    输入:180

    输出:2 2 3 3 5


    首先收下概念,质因数(或质因子)在数论里是指能整除给定正整数的质数,每个合数都可以写成几个质数相乘的形式,那么这几个质数就都叫做这个合数的质因数,比如10=2×5,那么2和5就是10的质数因子。

    思路1:最大质因数必小于输入数字的平方根

    1. #include <stdio.h>
    2. #include <math.h>
    3. int main() {
    4. int a, b, i = 0;
    5. scanf("%d", &a);
    6. for (b = 2; b <= a; b++) {
    7. if (b > sqrt(a) + 1) {
    8. b = a;
    9. }
    10. while (a % b == 0) {
    11. printf("%d ", b);
    12. a = a / b;
    13. }
    14. }
    15. return 0;
    16. }

    思路2:如果一个数在它的根号左边或右边没有质数,那么这个数的质数只有1和它本身

    1. #include <stdio.h>
    2. #include <math.h>
    3. int main() {
    4. long int n;
    5. scanf("%ld", &n);
    6. int i = 2;
    7. int j = 0;
    8. for (; i <= sqrt(n);) {
    9. if (n % i == 0) {
    10. printf("%d ", i);
    11. n /= i;
    12. continue;
    13. } else {
    14. i++;
    15. }
    16. j++;
    17. }
    18. printf("%d ", n);
    19. return 0;
    20. }

  • 相关阅读:
    ObjectMapper的使用和使用过程中引发的思考
    13-Hive的基本操作和查询语法以及案例
    了解Vue
    px4仿真实现无人机自主飞行
    什么是强制缓存?什么是协商缓存?cache
    http缓存
    【应用】布隆过滤器
    Android11 适配
    linux放开8080端口
    15. Redis 持久化
  • 原文地址:https://blog.csdn.net/super828/article/details/125524712