华为机考题(一):质数因子

题目描述

功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举),最后一个数后面也要有空格。

输入描述

输入一个 long 型正整数。

输出描述

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

示例

输入:

text

复制代码
180

输出:

text

复制代码
2 2 3 3 5 

说明: 180 = 2 × 2 × 3 × 3 × 5


C 语言解决方案

思路

从小到大枚举因子 i(从 2 开始):

  1. 只要 n 能被 i 整除,就输出 i,并令 n /= i,重复直到不能整除。

  2. 枚举到 i * i > n 时停止。若此时 n > 1,说明 n 本身是一个质因子,直接输出。

关键优化: 循环条件用 i * i <= n,可将复杂度从 O(n) 降到 O(√n)。

代码实现

c

复制代码
#include <stdio.h>

int main(void) {
    long n;
    scanf("%ld", &n);

    // 枚举因子,i * i <= n 是核心优化
    for (long i = 2; i * i <= n; i++) {
        while (n % i == 0) {
            printf("%ld ", i);
            n /= i;
        }
    }

    // 若剩余部分 > 1,则它本身是质因子
    if (n > 1) {
        printf("%ld ", n);
    }

    printf("\n");
    return 0;
}
相关推荐
海上小飞龙13 小时前
【KMP算法-下篇】同一道题:Java 库函数 2600 微秒,手写 KMP 16 微秒
java·开发语言·算法
青少儿编程课堂13 小时前
后缀自动机解析:本质不同子串与最长重复片段统计
c++·python·算法·bfs·信息学竞赛
朝朝辞暮i13 小时前
C++ 第 12 课:局部变量、作用域、变量生命周期
开发语言·c++·算法
乐迪信息14 小时前
港口船舶逆行怎么管?AI防爆摄像机搭载智能检测算法
大数据·人工智能·深度学习·算法·计算机视觉
Sirens.15 小时前
Java并发锁详解:六类锁策略与 synchronized 底层原理
java·前端·算法
李游Leo16 小时前
HarmonyOS 7 + Spatial Recon Kit-Core File Kit:3DGS 重建产物的原子发布与中断恢复【鸿蒙心迹】
3d·华为·harmonyos
和裕16 小时前
全纸结构重型纸箱能否满足 1 吨以上设备出口熏蒸豁免要求?通关合规性全解析
大数据·运维·网络·人工智能·算法
tangguofeng16 小时前
不带头结点的链队操作集(不含InitFlag)(C语言版)
算法
HwJack2017 小时前
【共创稿事节】HarmonyOS 7空间排布原则:视锥、舒适区与可达性
microsoft·华为·harmonyos
苏打豆18 小时前
CRISP源码阅读——基于ROS2力矩反馈控制器与速度加速度零空间
c++·线性代数·算法·矩阵·机器人