90分,T了一个点求解
查看原帖
90分,T了一个点求解
1223528
Eraser2011楼主2024/4/26 21:57

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;
}

2024/4/26 21:57
加载中...