diff --git a/prime.c b/prime.c new file mode 100644 index 0000000..32972eb --- /dev/null +++ b/prime.c @@ -0,0 +1,68 @@ +#include +#include + +void findFactors(int num) +{ + int i, exponent = 0; + printf("%d =", num); + + while (num % 2 == 0) + { + exponent++; + num /= 2; + } + if (exponent > 1) + { + printf(" 2^%d *", exponent); + } + else if (exponent == 1) + { + printf(" 2 *"); + } + for (i = 3; i * i <= num; i += 2) + { + exponent = 0; + while (num % i == 0) + { + exponent++; + num /= i; + } + if (exponent > 1) + { + printf(" %d^%d *", i, exponent); + } + else if (exponent == 1) + { + printf(" %d *", i); + } + } + if (num != 1) + { + printf(" %d *", num); + } + printf("\b \n"); +} + +int main(int argc, char *argv[]) +{ + int num; + + if (argc != 2) + { + printf("Usage: %s \n", argv[0]); + return 1; + } + + num = atoi(argv[1]); + if (num <= 1) + { + printf("%d\n", num); + } + else + { + findFactors(num); + } + + + return 0; +} \ No newline at end of file diff --git a/prime.py b/prime.py new file mode 100644 index 0000000..59a758c --- /dev/null +++ b/prime.py @@ -0,0 +1,35 @@ +import sys + +def findFactors(num): + exponent = 0 + print(f"{num} =", end="") + while num % 2 == 0: + exponent += 1 + num //= 2 + if exponent > 1: + print(f" 2^{exponent} *", end="") + elif exponent == 1: + print(" 2 *", end="") + for i in range(3, int(num**0.5) + 1, 2): + exponent = 0 + while num % i == 0: + exponent += 1 + num //= i + if exponent > 1: + print(f" {i}^{exponent} *", end="") + elif exponent == 1: + print(f" {i} *", end="") + if num != 1: + print(f" {num} *", end="") + print("\b ") + +if __name__ == "__main__": + if len(sys.argv) != 2: + print("Usage: python prime.py ") + sys.exit(1) + + num = int(sys.argv[1]) + if num <= 1: + print(f"{num}") + else: + findFactors(num)