ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

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

华为机考题(一):质数因子 题目描述功能输入一个正整数按照从小到大的顺序输出它的所有质因子重复的也要列举最后一个数后面也要有空格。输入描述输入一个long型正整数。输出描述按照从小到大的顺序输出它的所有质因子的字符串以空格隔开。示例输入text180输出text2 2 3 3 5说明180 2 × 2 × 3 × 3 × 5C 语言解决方案思路从小到大枚举因子i从 2 开始只要n能被i整除就输出i并令n / i重复直到不能整除。枚举到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; }
返回列表