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