质数因子

质数因子

https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607?tpId=37&&tqId=21229&rp=1&ru=/ta/huawei&qru=/ta/huawei/question-ranking

质数因子

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

输入描述:输入一个整数

输出描述:按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。

示例1:输入:180,输出:2 2 3 3 5

方法一:

思路分析: 首先质因子的概念为在数论里,某一正整数的质因子指能整除该数的质数。比如66的质因子是33226=326 = 3 * 210010022个质因子:2255。(100=250100 = 2 * 50, 且100=520100=5 * 20,只有2255是质数),因为本题题目要求按照从小到大的顺序输出它的所有质因子包括重复的数据,输出结果特别注意用空格隔开,本题可以逐个记录变量的值,设定一个指针变量ii,用来记录质因子,从数字2开始,只要能被输入数据整除,就将ii值记录,然后将i值重新定义到22,继续循环判断,如果不能被整除,就将i值自增,最终将resres输出即可。 图解:alt

核心代码:

#include<stdio.h>

int main(){
    int res=0;
    scanf("%d",&res);//输入
    for(int i=2;i*i<=res;){
        if(res%i==0){//能够整除说明i是质因子
            printf("%d ",i);
            res=res/i;
            i=2;//重复的不能漏掉
        }
        else
            i++;//不能整除重新判断
    }
    printf("%d ",res);
}

时间复杂度:一个嵌套循环,始终要保证i方≤res,故平均时间复杂度为O(n)O(\sqrt{n})

空间复杂度:不需要借助辅助数组,因此空间复杂度为O(1)O(1)

方法二:

思路分析:同样,也可以采用递归的方法,如果能被整除num%i==0num \% i == 0,则记录以后进入递归继续进行判断,为了减少循环的次数,对numnum进行开根号处理,这样会导致可能最后一个不被记录,因此还需要加一条语句,将最后一个质数输入即可。

核心代码:

num = int(input())

def division(num):
    for i in range(2,int(num**0.5+1)):#**0.5表示开根号,int表示强制转换为整数
        if num % i == 0:##可以被整除
            print(str(i), end=' ')
            num = num // i
            division(num)#递归
            break
    else:
        print(str(num), end=' ')#最后一个可能是它本身

division(num)

时间复杂度: 一个forfor循环,用来查找合适的ii值并记录,一个递归用来加载下一个numnum数。故平均时间复杂度为O(nn)O(n\sqrt{n})

空间复杂度:不需要借助辅助数组,因此空间复杂度为O(1)O(1)

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
5182次浏览 51人参与
# 百度工作体验 #
316368次浏览 2232人参与
# MiniMax求职进展汇总 #
25447次浏览 323人参与
# 沪漂/北漂你觉得哪个更苦? #
1855次浏览 44人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
16947次浏览 137人参与
# 春招至今,你的战绩如何? #
16737次浏览 152人参与
# 米连集团26产品管培生项目 #
7691次浏览 235人参与
# 你的实习产出是真实的还是包装的? #
3470次浏览 58人参与
# HR最不可信的一句话是__ #
1213次浏览 33人参与
# AI面会问哪些问题? #
1079次浏览 29人参与
# 你做过最难的笔试是哪家公司 #
1432次浏览 24人参与
# AI时代,哪个岗位还有“活路” #
3111次浏览 54人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
153000次浏览 889人参与
# 简历第一个项目做什么 #
32257次浏览 369人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
8075次浏览 43人参与
# 简历中的项目经历要怎么写? #
311326次浏览 4284人参与
# XX请雇我工作 #
51168次浏览 171人参与
# 投格力的你,拿到offer了吗? #
178453次浏览 891人参与
# 你最满意的offer薪资是哪家公司? #
77046次浏览 375人参与
# AI时代,哪些岗位最容易被淘汰 #
65036次浏览 915人参与
# 秋招白月光 #
731620次浏览 5439人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187708次浏览 1123人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务