T的那个点1.20毫秒,估计是那里死循环了,求大佬解释下,谢谢!!!
以下是代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
bool zhi(ll n) {
if (n == 1)return 1;
ll x = sqrt(n);
for (ll i = 2; i <= x; i++) {
if (n % i == 0)return false;
}
return true;
}
int main() {
cin.tie(0), cout.tie(0);
ios::sync_with_stdio(false);
ll n;
scanf("%lld", &n);
for (ll i = 2; i < n; i++) {
if (zhi(i) && n % i == 0) {
int num = 0;
while (n % i == 0) {
n /= i;
num++;
}
if (num == 1)printf("%lld * ", i);
else printf("%lld^%lld * ", i, num);
if (zhi(n)) {
if (n != 1)printf("%lld", n);
return 0;
}
}
}
if (n != 1)printf("%lld", n);
return 0;
}