-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfactorial_decomposition_main.c
More file actions
78 lines (74 loc) · 4.46 KB
/
factorial_decomposition_main.c
File metadata and controls
78 lines (74 loc) · 4.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/*
5 kyu
Factorial decomposition
https://www.codewars.com/kata/5a045fee46d843effa000070
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* decomp(int n);
static void do_test(int n, const char* expected) {
char* actual = decomp(n);
printf("For n = %d\nExpected: \"%s\"\nReceived: \"%s\"\n%s\n\n", n, expected,
actual, strcmp(expected, actual) == 0 ? "OK" : "FAIL");
free(actual);
}
int main(void) {
do_test(17, "2^15 * 3^6 * 5^3 * 7^2 * 11 * 13 * 17");
do_test(5, "2^3 * 3 * 5");
do_test(22, "2^19 * 3^9 * 5^4 * 7^3 * 11^2 * 13 * 17 * 19");
do_test(14, "2^11 * 3^5 * 5^2 * 7^2 * 11 * 13");
do_test(25, "2^22 * 3^10 * 5^6 * 7^3 * 11^2 * 13 * 17 * 19 * 23");
do_test(
3001,
"2^2993 * 3^1498 * 5^748 * 7^498 * 11^298 * 13^248 * 17^186 * 19^165 * "
"23^135 * 29^106 * 31^99 * 37^83 * 41^74 * 43^70 * 47^64 * 53^57 * 59^50 "
"* 61^49 * 67^44 * 71^42 * 73^41 * 79^37 * 83^36 * 89^33 * 97^30 * "
"101^29 * 103^29 * 107^28 * 109^27 * 113^26 * 127^23 * 131^22 * 137^21 * "
"139^21 * 149^20 * 151^19 * 157^19 * 163^18 * 167^17 * 173^17 * 179^16 * "
"181^16 * 191^15 * 193^15 * 197^15 * 199^15 * 211^14 * 223^13 * 227^13 * "
"229^13 * 233^12 * 239^12 * 241^12 * 251^11 * 257^11 * 263^11 * 269^11 * "
"271^11 * 277^10 * 281^10 * 283^10 * 293^10 * 307^9 * 311^9 * 313^9 * "
"317^9 * 331^9 * 337^8 * 347^8 * 349^8 * 353^8 * 359^8 * 367^8 * 373^8 * "
"379^7 * 383^7 * 389^7 * 397^7 * 401^7 * 409^7 * 419^7 * 421^7 * 431^6 * "
"433^6 * 439^6 * 443^6 * 449^6 * 457^6 * 461^6 * 463^6 * 467^6 * 479^6 * "
"487^6 * 491^6 * 499^6 * 503^5 * 509^5 * 521^5 * 523^5 * 541^5 * 547^5 * "
"557^5 * 563^5 * 569^5 * 571^5 * 577^5 * 587^5 * 593^5 * 599^5 * 601^4 * "
"607^4 * 613^4 * 617^4 * 619^4 * 631^4 * 641^4 * 643^4 * 647^4 * 653^4 * "
"659^4 * 661^4 * 673^4 * 677^4 * 683^4 * 691^4 * 701^4 * 709^4 * 719^4 * "
"727^4 * 733^4 * 739^4 * 743^4 * 751^3 * 757^3 * 761^3 * 769^3 * 773^3 * "
"787^3 * 797^3 * 809^3 * 811^3 * 821^3 * 823^3 * 827^3 * 829^3 * 839^3 * "
"853^3 * 857^3 * 859^3 * 863^3 * 877^3 * 881^3 * 883^3 * 887^3 * 907^3 * "
"911^3 * 919^3 * 929^3 * 937^3 * 941^3 * 947^3 * 953^3 * 967^3 * 971^3 * "
"977^3 * 983^3 * 991^3 * 997^3 * 1009^2 * 1013^2 * 1019^2 * 1021^2 * "
"1031^2 * 1033^2 * 1039^2 * 1049^2 * 1051^2 * 1061^2 * 1063^2 * 1069^2 * "
"1087^2 * 1091^2 * 1093^2 * 1097^2 * 1103^2 * 1109^2 * 1117^2 * 1123^2 * "
"1129^2 * 1151^2 * 1153^2 * 1163^2 * 1171^2 * 1181^2 * 1187^2 * 1193^2 * "
"1201^2 * 1213^2 * 1217^2 * 1223^2 * 1229^2 * 1231^2 * 1237^2 * 1249^2 * "
"1259^2 * 1277^2 * 1279^2 * 1283^2 * 1289^2 * 1291^2 * 1297^2 * 1301^2 * "
"1303^2 * 1307^2 * 1319^2 * 1321^2 * 1327^2 * 1361^2 * 1367^2 * 1373^2 * "
"1381^2 * 1399^2 * 1409^2 * 1423^2 * 1427^2 * 1429^2 * 1433^2 * 1439^2 * "
"1447^2 * 1451^2 * 1453^2 * 1459^2 * 1471^2 * 1481^2 * 1483^2 * 1487^2 * "
"1489^2 * 1493^2 * 1499^2 * 1511 * 1523 * 1531 * 1543 * 1549 * 1553 * "
"1559 * 1567 * 1571 * 1579 * 1583 * 1597 * 1601 * 1607 * 1609 * 1613 * "
"1619 * 1621 * 1627 * 1637 * 1657 * 1663 * 1667 * 1669 * 1693 * 1697 * "
"1699 * 1709 * 1721 * 1723 * 1733 * 1741 * 1747 * 1753 * 1759 * 1777 * "
"1783 * 1787 * 1789 * 1801 * 1811 * 1823 * 1831 * 1847 * 1861 * 1867 * "
"1871 * 1873 * 1877 * 1879 * 1889 * 1901 * 1907 * 1913 * 1931 * 1933 * "
"1949 * 1951 * 1973 * 1979 * 1987 * 1993 * 1997 * 1999 * 2003 * 2011 * "
"2017 * 2027 * 2029 * 2039 * 2053 * 2063 * 2069 * 2081 * 2083 * 2087 * "
"2089 * 2099 * 2111 * 2113 * 2129 * 2131 * 2137 * 2141 * 2143 * 2153 * "
"2161 * 2179 * 2203 * 2207 * 2213 * 2221 * 2237 * 2239 * 2243 * 2251 * "
"2267 * 2269 * 2273 * 2281 * 2287 * 2293 * 2297 * 2309 * 2311 * 2333 * "
"2339 * 2341 * 2347 * 2351 * 2357 * 2371 * 2377 * 2381 * 2383 * 2389 * "
"2393 * 2399 * 2411 * 2417 * 2423 * 2437 * 2441 * 2447 * 2459 * 2467 * "
"2473 * 2477 * 2503 * 2521 * 2531 * 2539 * 2543 * 2549 * 2551 * 2557 * "
"2579 * 2591 * 2593 * 2609 * 2617 * 2621 * 2633 * 2647 * 2657 * 2659 * "
"2663 * 2671 * 2677 * 2683 * 2687 * 2689 * 2693 * 2699 * 2707 * 2711 * "
"2713 * 2719 * 2729 * 2731 * 2741 * 2749 * 2753 * 2767 * 2777 * 2789 * "
"2791 * 2797 * 2801 * 2803 * 2819 * 2833 * 2837 * 2843 * 2851 * 2857 * "
"2861 * 2879 * 2887 * 2897 * 2903 * 2909 * 2917 * 2927 * 2939 * 2953 * "
"2957 * 2963 * 2969 * 2971 * 2999 * 3001");
do_test(4001, "n > 4000");
return 0;
}