I have written the following code to decompose a number into primes. The problem is that it takes so much time and I have no idea why. #include <stdio.h> #include <stdlib.h> int prime (int n){int j=2; if (n==2) return 1; while(j<(n/2)){ if(n%j==0) { return 0;} j=j+1; }return 1;} int expotent (int n,int p){int j=0; while((n%p)==0){ j=j+1; p=p*p; } return j; } int main(int argc, char *argv[]) {int h=0,n=1,k=1,t=0 ; scanf("%d",&n); int j=n; while(k!=n){ if(expotent(n,j)!=0 & prime(j)==1) { if(t==0) {t=1; printf("%d^%d",j,expotent(n,j)); for( h<expotent(n,j); h++;){k=k*j;} } else { printf("*%d^%d",j,expotent(n,j)); for( h<expotent(n,j); h++;){k=k*j;}} } j=j-1; } return 0;}