链接:质数因子_牛客题霸_牛客网
描述 :功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
数据范围: 1≤n≤2×109+14 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;
}
- 优化代码
- 因为一个数
n
如果不是质数,那么它一定有一个小于等于sqrt(n)
的质因数。