质数因子

链接:质数因子_牛客题霸_牛客网

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

 
数据范围: 1≤n≤2×109+14 

输入描述:

输入一个整数

输出描述:

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

实现:

  • 运行超时
查看代码

#include <cstdint>
#include <iostream>
#include <cmath>

using namespace std;

void getPrimeFactor(const uint32_t * num ){ //常量指针,值不可变
    if(*num > 1){
        for(int i = 2; i <=(*num); i++){
            uint32_t t = (*num) % i;
            if( t == 0){
                cout << i << " ";
                uint32_t t1 = *num / i;
                getPrimeFactor(&t1);
                return;
            }
        }
    }
}// 2  2 3

int main() {
    uint32_t number;
    while(cin>>number){
        getPrimeFactor(&number);

    }
    return 0;
}
  • 优化代码
  1. 因为一个数n如果不是质数,那么它一定有一个小于等于sqrt(n)的质因数。
  2.  
posted @ 2024-10-31 10:48  珂k  阅读(6)  评论(0编辑  收藏  举报