题目大意:给你一个数,要求你写出他的所有因子
解题思路:常规for循环会爆,因为每个因子都是素数,所以将其想象成求当前数是否为素数,用logn的方法去求该数是否为素数,这样就不会TLE了
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main() {
long long N;
while(scanf("%lld",&N) != EOF ) {
if(N < 0)
break;
int temp = sqrt(N);
long long i = 2;
for(; i <= temp + 1; i++)
if(N % i == 0) {
printf(" %lld\n",i);
N = N / i;
temp = sqrt(N);
i--;
}
if(i >= temp + 2)
printf(" %lld\n",N);
printf("\n");
}
return 0;
}