#include #include #include /* TYPEDEFS & ENUMS */ typedef unsigned int bool; enum boolstate { true = 1, false = 0 }; /* MY MATH FUNCTIONS */ bool isPrime(long int num) { bool r = true; int i; for (i = 2; i < num; i++) { if ((num % i) == 0) r = false; } return r; } bool isDivisor(const long int div, const long int num) { if ((num % div) == 0) return true; else return false; } /* MAIN */ int main(void) { long int n; long int i; long int d; int j; int tmp; long int r[24][2]; long int rn; printf("\n Number Scomposer\nwritten in C by Gi@cky98\n\nUsage: write number to scompose. Write 0 to exit.\n\n"); begin: printf("Number to scompose: "); scanf("%i", &tmp); n = (long int)tmp; if (!n) return 0; for (i = 0; i < 24; i++) { r[i][0] = 0; r[i][1] = 0; } rn = 0; while (n != 1) { for (i = 2; i <= n; i++) { if ((isPrime(i) == true) && (isDivisor(i, n) == true)) { tmp = 0; n = n / i; for (j = 0; j < rn; j++) { if (r[j][0] == i) { r[j][1]++; tmp = 1; break;} } if (!tmp) { r[rn][0] = i; r[rn][1]++; rn++; } } } } printf("Result: %i^%i", (int)r[0][0], (int)r[0][1]); for (j = 1; j < rn; j++) { printf(" * %i^%i", (int)r[j][0], (int)r[j][1]); } printf("\n\n"); goto begin; return 0; }