Submission
Status:
PPPxxxPPxx
Subtask/Task Score:
50/100
Score: 50
User: I_am_me
Problemset: แยกตัวประกอบ
Language: c
Time: 0.007 second
Submitted On: 2025-10-12 15:41:32
#include <stdio.h>
int isprime(long long num) {
if (num < 2) return 0;
else if (num == 2) return 1;
else if (num%2 == 0) return 0;
for(long long i = 3;i*i<=num;i+=2) {
if (num%i == 0) {
return 0;
}
}
return 1;
}
int nextprime(long long bef){
bef = bef+1 ;
while(1){
if (isprime(bef) == 1) break;
else bef+=1 ;
}
return bef;
}
int main(){
long long n;
scanf("%lld",&n) ;
long long ren = n;
if (isprime(n) == 1) printf("%lld^1",n) ;
else {
long long base[n], mul[n] ;
for(long long i = 0;i<n;i++) base[i] = 0;
for (long long i = 0;i<n;i++) mul[i] = 0;
long long prime = 2;
while (1) {
if (n%prime == 0) {
mul[prime]+=1 ;
base[prime] = 1 ;
n=n/prime ;
if (n == 1) break;
}
else if (n%prime != 0) {
prime = nextprime(prime) ;
}
}
for(long long i = 0;i<ren;i++) {
if (base[i]==1){
printf("%lld^%lld ",i,mul[i]) ;
}
}
}
}